about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-04-18 23:29:22 +0100
committerJames Booth <boothj5@gmail.com>2014-04-18 23:29:22 +0100
commitfadad0aeba3258677d1eefa303be5a54fafdda03 (patch)
tree9ccb14261201cf42f17861f4300eb3c557735b1e
parent2451b7b1ca805c863dfb58b9925f21cb2d51ab58 (diff)
downloadprofani-tty-fadad0aeba3258677d1eefa303be5a54fafdda03.tar.gz
OTR end messages are now send to recipients not in the roster.
fixes #333
-rw-r--r--src/otr/otr.c12
-rw-r--r--src/ui/titlebar.c8
2 files changed, 16 insertions, 4 deletions
diff --git a/src/otr/otr.c b/src/otr/otr.c
index af43854c..2cb86695 100644
--- a/src/otr/otr.c
+++ b/src/otr/otr.c
@@ -32,6 +32,10 @@
 #include "contact.h"
 #include "ui/ui.h"
 
+#define PRESENCE_ONLINE 1
+#define PRESENCE_OFFLINE 0
+#define PRESENCE_UNKNOWN -1
+
 static OtrlUserState user_state;
 static OtrlMessageAppOps ops;
 static char *jid;
@@ -49,10 +53,14 @@ cb_is_logged_in(void *opdata, const char *accountname,
     const char *protocol, const char *recipient)
 {
     PContact contact = roster_get_contact(recipient);
+    if (contact == NULL) {
+        return PRESENCE_ONLINE;
+    }
+
     if (g_strcmp0(p_contact_presence(contact), "offline") == 0) {
-        return 0;
+        return PRESENCE_OFFLINE;
     } else {
-        return 1;
+        return PRESENCE_ONLINE;
     }
 }
 
diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c
index 395b2c6f..99932024 100644
--- a/src/ui/titlebar.c
+++ b/src/ui/titlebar.c
@@ -157,11 +157,15 @@ _title_bar_draw(void)
         waddch(win, ' ');
     mvwprintw(win, 0, 0, " %s", current_title);
 
-
 #ifdef HAVE_LIBOTR
     // show privacy
     if (current_recipient != NULL) {
-        char *recipient_jid = roster_barejid_from_name(current_recipient);
+        char *recipient_jid = NULL;
+        if (roster_find_contact(current_recipient) != NULL) {
+            recipient_jid = roster_barejid_from_name(current_recipient);
+        } else {
+            recipient_jid = current_recipient;
+        }
         ProfWin *current = wins_get_by_recipient(recipient_jid);
         if (current != NULL) {
             if (current->type == WIN_CHAT) {