about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-11-07 22:49:38 +0000
committerJames Booth <boothj5@gmail.com>2012-11-07 22:49:38 +0000
commit6cb9c853cb6a33ed7f8f1f29e513f4c587593b1a (patch)
treed485c67859eaf53d0a7b5fbf0bac1815f2fbc9bd /src
parenta676c50b681e092a25d96c5f9300b1314cd6b3d4 (diff)
downloadprofani-tty-6cb9c853cb6a33ed7f8f1f29e513f4c587593b1a.tar.gz
jabber: added _room_presence_handler
Diffstat (limited to 'src')
-rw-r--r--src/jabber.c42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/jabber.c b/src/jabber.c
index 60fe2e3d..21530c7e 100644
--- a/src/jabber.c
+++ b/src/jabber.c
@@ -645,6 +645,30 @@ _ping_timed_handler(xmpp_conn_t * const conn, void * const userdata)
 }
 
 static int
+_room_presence_handler(const char * const jid)
+{
+    char *room = NULL;
+    char *nick = NULL;
+
+    if (!room_parse_room_jid(jid, &room, &nick)) {
+        log_error("Could not parse room jid: %s", room);
+        g_free(room);
+        g_free(nick);
+
+        return 1;
+    }
+
+    // handle self presence (means room roster has been sent)
+    if (strcmp(room_get_nick_for_room(room), nick) == 0) {
+        prof_handle_room_roster_complete(room);
+    } else {
+        room_add_to_roster(room, nick);
+    }
+
+    return 1;
+}
+
+static int
 _presence_handler(xmpp_conn_t * const conn,
     xmpp_stanza_t * const stanza, void * const userdata)
 {
@@ -657,23 +681,7 @@ _presence_handler(xmpp_conn_t * const conn,
 
     // handle chat room presence
     if (room_is_active(from)) {
-        char *room = NULL;
-        char *nick = NULL;
-
-        if (!room_parse_room_jid(from, &room, &nick)) {
-            log_error("Could not parse room jid: %s", room);
-            g_free(room);
-            g_free(nick);
-
-            return 1;
-        }
-
-        // handle self presence (means room roster has been sent)
-        if (strcmp(room_get_nick_for_room(room), nick) == 0) {
-            prof_handle_room_roster_complete(room);
-        } else {
-            room_add_to_roster(room, nick);
-        }
+        return _room_presence_handler(from);
 
     // handle regular presence
     } else {