From 00dbc1ba7c66c3bb6898aed26922bf5295768bb1 Mon Sep 17 00:00:00 2001 From: William Wennerström Date: Wed, 9 Dec 2020 19:02:37 +0100 Subject: Cast chat/muc window to correct type and refactor cmd_sendfile Fixes #1449 --- src/command/cmd_funcs.c | 57 ++++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'src/command/cmd_funcs.c') diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 68153270..cf826fe5 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -4889,43 +4889,52 @@ cmd_sendfile(ProfWin* window, const char* const command, gchar** args) FILE* fh = fdopen(fd, "rb"); + gboolean omemo_enabled = FALSE; + gboolean sendfile_enabled = TRUE; + switch (window->type) { case WIN_MUC: + { + ProfMucWin* mucwin = (ProfMucWin*)window; + assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); + omemo_enabled = mucwin->is_omemo == TRUE; + break; + } case WIN_CHAT: { ProfChatWin* chatwin = (ProfChatWin*)window; - -#ifdef HAVE_OMEMO - if (chatwin->is_omemo) { - char* err = NULL; - alt_scheme = OMEMO_AESGCM_URL_SCHEME; - alt_fragment = _add_omemo_stream(&fd, &fh, &err); - if (err != NULL) { - cons_show_error(err); - win_println(window, THEME_ERROR, "-", err); - goto out; - } - break; - } -#endif - - if (window->type == WIN_CHAT) { - assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); - if ((chatwin->pgp_send && !prefs_get_boolean(PREF_PGP_SENDFILE)) - || (chatwin->is_otr && !prefs_get_boolean(PREF_OTR_SENDFILE))) { - cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); - win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); - goto out; - } - } + assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); + omemo_enabled = chatwin->is_omemo == TRUE; + sendfile_enabled = !((chatwin->pgp_send == TRUE && !prefs_get_boolean(PREF_PGP_SENDFILE)) + || (chatwin->is_otr == TRUE && !prefs_get_boolean(PREF_OTR_SENDFILE))); break; } + case WIN_PRIVATE: // We don't support encryption in private MUC windows. default: cons_show_error("Unsupported window for file transmission."); goto out; } + if (!sendfile_enabled) { + cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); + win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); + goto out; + } + +#ifdef HAVE_OMEMO + if (omemo_enabled) { + char* err = NULL; + alt_scheme = OMEMO_AESGCM_URL_SCHEME; + alt_fragment = _add_omemo_stream(&fd, &fh, &err); + if (err != NULL) { + cons_show_error(err); + win_println(window, THEME_ERROR, "-", err); + goto out; + } + } +#endif + HTTPUpload* upload = malloc(sizeof(HTTPUpload)); upload->window = window; -- cgit 1.4.1-2-gfad0