about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/command.c2
-rw-r--r--src/command/commands.c2
-rw-r--r--src/otr/otr.c9
-rw-r--r--src/otr/otr.h2
-rw-r--r--src/server_events.c2
5 files changed, 14 insertions, 3 deletions
diff --git a/src/command/command.c b/src/command/command.c
index a46c1548..59c5515c 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -1363,7 +1363,7 @@ cmd_execute_default(const char * const inp)
                 ui_current_print_line("You are not currently connected.");
             } else {
 #ifdef HAVE_LIBOTR
-                if ((strcmp(prefs_get_string(PREF_OTR_POLICY), "always") == 0) && !otr_is_secure(recipient)) {
+                if ((strcmp(otr_get_policy(recipient), "always") == 0) && !otr_is_secure(recipient)) {
                     cons_show_error("Failed to send message. Please check OTR policy");
                     return TRUE;
                 }
diff --git a/src/command/commands.c b/src/command/commands.c
index aeae1f90..03759b4b 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1004,7 +1004,7 @@ cmd_msg(gchar **args, struct cmd_help_t help)
                     cons_show_error("Failed to encrypt and send message,");
                 }
             } else {
-                char *policy = prefs_get_string(PREF_OTR_POLICY);
+                char *policy = otr_get_policy(usr_jid);
 
                 if (strcmp(policy, "always") == 0) {
                     cons_show_error("Failed to send message. Please check OTR policy");
diff --git a/src/otr/otr.c b/src/otr/otr.c
index 043dc30f..dd715233 100644
--- a/src/otr/otr.c
+++ b/src/otr/otr.c
@@ -32,6 +32,7 @@
 #include "roster_list.h"
 #include "contact.h"
 #include "ui/ui.h"
+#include "config/preferences.h"
 
 #define PRESENCE_ONLINE 1
 #define PRESENCE_OFFLINE 0
@@ -516,6 +517,13 @@ _otr_get_their_fingerprint(const char * const recipient)
 }
 
 static char *
+_otr_get_policy(const char * const recipient)
+{
+    // check global setting
+    return prefs_get_string(PREF_OTR_POLICY);
+}
+
+static char *
 _otr_encrypt_message(const char * const to, const char * const message)
 {
     char *newmessage = NULL;
@@ -596,4 +604,5 @@ otr_init_module(void)
     otr_smp_secret = _otr_smp_secret;
     otr_smp_question = _otr_smp_question;
     otr_smp_answer = _otr_smp_answer;
+    otr_get_policy = _otr_get_policy;
 }
diff --git a/src/otr/otr.h b/src/otr/otr.h
index 87b34b45..f3000786 100644
--- a/src/otr/otr.h
+++ b/src/otr/otr.h
@@ -63,4 +63,6 @@ char * (*otr_decrypt_message)(const char * const from, const char * const messag
 
 void (*otr_free_message)(char *message);
 
+char * (*otr_get_policy)(const char * const recipient);
+
 #endif
diff --git a/src/server_events.c b/src/server_events.c
index 6fb06c74..52fdf052 100644
--- a/src/server_events.c
+++ b/src/server_events.c
@@ -227,7 +227,7 @@ handle_incoming_message(char *from, char *message, gboolean priv)
     gboolean was_decrypted = FALSE;
     char *newmessage;
 
-    char *policy = prefs_get_string(PREF_OTR_POLICY);
+    char *policy = otr_get_policy(from);
     char *whitespace_base = strstr(message,OTRL_MESSAGE_TAG_BASE);
 
     if (!priv) {