about summary refs log tree commit diff stats
path: root/src/command/command.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-01-04 20:19:42 +0000
committerJames Booth <boothj5@gmail.com>2015-01-04 20:19:42 +0000
commit42a5c431c777ab22c2187bb6f50a62ef304d8d6b (patch)
tree84fc499f366e477010ffedfd566ad6b540c2eca6 /src/command/command.c
parent4898ed10a45581a98986fed5a2fabe6a6e7a9dab (diff)
downloadprofani-tty-42a5c431c777ab22c2187bb6f50a62ef304d8d6b.tar.gz
Use resource in chat sessions
Diffstat (limited to 'src/command/command.c')
-rw-r--r--src/command/command.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/command/command.c b/src/command/command.c
index 5c1f858d..470bb886 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -1814,8 +1814,15 @@ cmd_execute_default(const char * inp)
                 if (otr_is_secure(chatwin->barejid)) {
                     char *encrypted = otr_encrypt_message(chatwin->barejid, inp);
                     if (encrypted != NULL) {
-                        gboolean send_state = chat_session_on_message_send(chatwin->barejid);
-                        message_send_chat(chatwin->barejid, chatwin->resource, encrypted, send_state);
+                        char *resource = NULL;
+                        gboolean send_state = FALSE;
+                        if (chat_session_exists(chatwin->barejid)) {
+                            resource = chat_session_get_resource(chatwin->barejid);
+                            send_state = chat_session_on_message_send(chatwin->barejid);
+                        } else {
+                            send_state = TRUE;
+                        }
+                        message_send_chat(chatwin->barejid, resource, encrypted, send_state);
                         otr_free_message(encrypted);
                         if (prefs_get_boolean(PREF_CHLOG)) {
                             const char *jid = jabber_get_fulljid();
@@ -1835,8 +1842,15 @@ cmd_execute_default(const char * inp)
                         cons_show_error("Failed to send message.");
                     }
                 } else {
-                    gboolean send_state = chat_session_on_message_send(chatwin->barejid);
-                    message_send_chat(chatwin->barejid, chatwin->resource, inp, send_state);
+                    char *resource = NULL;
+                    gboolean send_state = FALSE;
+                    if (chat_session_exists(chatwin->barejid)) {
+                        resource = chat_session_get_resource(chatwin->barejid);
+                        send_state = chat_session_on_message_send(chatwin->barejid);
+                    } else {
+                        send_state = TRUE;
+                    }
+                    message_send_chat(chatwin->barejid, resource, inp, send_state);
                     if (prefs_get_boolean(PREF_CHLOG)) {
                         const char *jid = jabber_get_fulljid();
                         Jid *jidp = jid_create(jid);
@@ -1847,8 +1861,15 @@ cmd_execute_default(const char * inp)
                     ui_outgoing_chat_msg("me", chatwin->barejid, inp);
                 }
 #else
-                gboolean send_state = chat_session_on_message_send(chatwin->barejid);
-                message_send_chat(chatwin->barejid, chatwin->resource, inp, send_state);
+                char *resource = NULL;
+                gboolean send_state = FALSE;
+                if (chat_session_exists(chatwin->barejid)) {
+                    resource = chat_session_get_resource(chatwin->barejid);
+                    send_state = chat_session_on_message_send(chatwin->barejid);
+                } else {
+                    send_state = TRUE;
+                }
+                message_send_chat(chatwin->barejid, resource, inp, send_state);
                 if (prefs_get_boolean(PREF_CHLOG)) {
                     const char *jid = jabber_get_fulljid();
                     Jid *jidp = jid_create(jid);