about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-05-07 20:41:05 +0100
committerJames Booth <boothj5@gmail.com>2014-05-07 20:41:05 +0100
commit1e4fc2ce793a418317b8adc929fc4a349d79fb15 (patch)
tree0ef2552285c2e7d260d0bb8b17fadde90f2a0b17 /src
parent9fd9871ee908088db4209d6ecc3b4a90d8cfbf8c (diff)
downloadprofani-tty-1e4fc2ce793a418317b8adc929fc4a349d79fb15.tar.gz
Added UI messages for smp question/answer result
Diffstat (limited to 'src')
-rw-r--r--src/otr/otrlibv3.c10
-rw-r--r--src/ui/core.c32
-rw-r--r--src/ui/ui.h3
3 files changed, 41 insertions, 4 deletions
diff --git a/src/otr/otrlibv3.c b/src/otr/otrlibv3.c
index 92ca3602..619e35cd 100644
--- a/src/otr/otrlibv3.c
+++ b/src/otr/otrlibv3.c
@@ -162,11 +162,15 @@ otrlib_handle_tlvs(OtrlUserState user_state, OtrlMessageAppOps *ops, ConnContext
                 if ((context->active_fingerprint->trust != NULL) && (context->active_fingerprint->trust[0] != '\0')) {
                     ui_smp_successful(context->username);
                     ui_trust(context->username);
-                    otr_trust(context->username);
                 } else {
                     ui_smp_unsuccessful_sender(context->username);
                     ui_untrust(context->username);
-                    otr_untrust(context->username);
+                }
+            } else {
+                if (context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED) {
+                    ui_smp_answer_success(context->username);
+                } else {
+                    ui_smp_answer_failure(context->username);
                 }
             }
         }
@@ -180,11 +184,9 @@ otrlib_handle_tlvs(OtrlUserState user_state, OtrlMessageAppOps *ops, ConnContext
             if ((context->active_fingerprint->trust != NULL) && (context->active_fingerprint->trust[0] != '\0')) {
                 ui_smp_successful(context->username);
                 ui_trust(context->username);
-                otr_trust(context->username);
             } else {
                 ui_smp_unsuccessful_receiver(context->username);
                 ui_untrust(context->username);
-                otr_untrust(context->username);
             }
         }
     }
diff --git a/src/ui/core.c b/src/ui/core.c
index bc4a9587..4bccf5d5 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -878,6 +878,36 @@ _ui_smp_successful(const char * const recipient)
 }
 
 static void
+_ui_smp_answer_success(const char * const recipient)
+{
+    ProfWin *window = wins_get_by_recipient(recipient);
+    if (window == NULL) {
+        return;
+    } else {
+        win_vprint_line(window, '!', 0, "%s successfully authenticated you.", recipient);
+        win_update_virtual(window);
+        if (wins_is_current(window)) {
+            ui_current_page_off();
+        }
+    }
+}
+
+static void
+_ui_smp_answer_failure(const char * const recipient)
+{
+    ProfWin *window = wins_get_by_recipient(recipient);
+    if (window == NULL) {
+        return;
+    } else {
+        win_vprint_line(window, '!', 0, "%s failed to authenticated you.", recipient);
+        win_update_virtual(window);
+        if (wins_is_current(window)) {
+            ui_current_page_off();
+        }
+    }
+}
+
+static void
 _ui_gone_insecure(const char * const recipient)
 {
     ProfWin *window = wins_get_by_recipient(recipient);
@@ -2112,6 +2142,8 @@ ui_init_module(void)
     ui_smp_unsuccessful_sender = _ui_smp_unsuccessful_sender;
     ui_smp_unsuccessful_receiver = _ui_smp_unsuccessful_receiver;
     ui_smp_aborted = _ui_smp_aborted;
+    ui_smp_answer_success = _ui_smp_answer_success;
+    ui_smp_answer_failure = _ui_smp_answer_failure;
     ui_chat_win_contact_online = _ui_chat_win_contact_online;
     ui_chat_win_contact_offline = _ui_chat_win_contact_offline;
     ui_handle_recipient_not_found = _ui_handle_recipient_not_found;
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 5e850c6c..c4d42939 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -71,6 +71,9 @@ void (*ui_smp_unsuccessful_sender)(const char * const recipient);
 void (*ui_smp_unsuccessful_receiver)(const char * const recipient);
 void (*ui_smp_aborted)(const char * const recipient);
 
+void (*ui_smp_answer_success)(const char * const recipient);
+void (*ui_smp_answer_failure)(const char * const recipient);
+
 unsigned long (*ui_get_idle_time)(void);
 void (*ui_reset_idle_time)(void);
 void (*ui_new_chat_win)(const char * const to);