diff options
-rw-r--r-- | src/command/commands.c | 13 | ||||
-rw-r--r-- | src/otr/otr.c | 12 | ||||
-rw-r--r-- | src/otr/otr.h | 2 | ||||
-rw-r--r-- | tests/otr/stub_otr.c | 7 |
4 files changed, 23 insertions, 11 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index 1ecaeb6a..ef912d88 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -39,9 +39,6 @@ #include <errno.h> #include <assert.h> #include <glib.h> -#ifdef HAVE_LIBOTR -#include <libotr/proto.h> -#endif #include "chat_session.h" #include "command/commands.h" @@ -1377,16 +1374,12 @@ cmd_msg(gchar **args, struct cmd_help_t help) cons_show_error("Failed to send message. Please check OTR policy"); return TRUE; } else if (policy == PROF_OTRPOLICY_OPPORTUNISTIC) { - GString *otr_message = g_string_new(msg); - g_string_append(otr_message, OTRL_MESSAGE_TAG_BASE); - g_string_append(otr_message, OTRL_MESSAGE_TAG_V2); - - char *id = message_send_chat_encrypted(barejid, otr_message->str); + char *otr_tagged_msg = otr_tag_message(msg); + char *id = message_send_chat_encrypted(barejid, otr_tagged_msg); ui_outgoing_chat_msg(barejid, msg, id); chat_log_msg_out(barejid, msg); free(id); - - g_string_free(otr_message, TRUE); + free(otr_tagged_msg); } else { _send_chat_message(barejid, msg); } diff --git a/src/otr/otr.c b/src/otr/otr.c index d0515e97..9dcff1f9 100644 --- a/src/otr/otr.c +++ b/src/otr/otr.c @@ -365,6 +365,18 @@ otr_key_loaded(void) return data_loaded; } +char * +otr_tag_message(const char * const msg) +{ + GString *otr_message = g_string_new(msg); + g_string_append(otr_message, OTRL_MESSAGE_TAG_BASE); + g_string_append(otr_message, OTRL_MESSAGE_TAG_V2); + char *result = otr_message->str; + g_string_free(otr_message, FALSE); + + return result; +} + gboolean otr_is_secure(const char * const recipient) { diff --git a/src/otr/otr.h b/src/otr/otr.h index 58d5c04b..91445a5c 100644 --- a/src/otr/otr.h +++ b/src/otr/otr.h @@ -58,6 +58,8 @@ void otr_poll(void); void otr_on_connect(ProfAccount *account); void otr_keygen(ProfAccount *account); +char* otr_tag_message(const char * const msg); + gboolean otr_key_loaded(void); gboolean otr_is_secure(const char * const recipient); diff --git a/tests/otr/stub_otr.c b/tests/otr/stub_otr.c index 82994034..7a0122b6 100644 --- a/tests/otr/stub_otr.c +++ b/tests/otr/stub_otr.c @@ -52,6 +52,11 @@ gboolean otr_key_loaded(void) return (gboolean)mock(); } +char* otr_tag_message(const char * const msg) +{ + return NULL; +} + gboolean otr_is_secure(const char * const recipient) { return FALSE; @@ -98,4 +103,4 @@ void otr_free_message(char *message) {} prof_otrpolicy_t otr_get_policy(const char * const recipient) { return PROF_OTRPOLICY_MANUAL; -} \ No newline at end of file +} |