diff options
author | James Booth <boothj5@gmail.com> | 2012-11-06 23:56:47 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2012-11-06 23:56:47 +0000 |
commit | 3436a2245d308373068a1be8b9826fd7d3cf0ada (patch) | |
tree | 02d6c4cf91fa63a7e6767ead3d09f09bc4eff0a3 /src/jabber.c | |
parent | 8beca3cbf7e2baa3c4ef00255ffe0a937571ef26 (diff) | |
download | profani-tty-3436a2245d308373068a1be8b9826fd7d3cf0ada.tar.gz |
Added room_parse_room_jid to room_chat
Diffstat (limited to 'src/jabber.c')
-rw-r--r-- | src/jabber.c | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/jabber.c b/src/jabber.c index 2c5f4f44..a139dedc 100644 --- a/src/jabber.c +++ b/src/jabber.c @@ -392,13 +392,20 @@ _message_handler(xmpp_conn_t * const conn, if(g_time_val_from_iso8601(utc_stamp, &tv_stamp)) { xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, "body"); + if (body != NULL) { - char *message = xmpp_stanza_get_text(body); - char **tokens = g_strsplit(from, "/", 0); - char *room_jid = tokens[0]; - char *nick = tokens[1]; - prof_handle_room_history(room_jid, nick, tv_stamp, message); - g_strfreev(tokens); + char *room = NULL; + char *nick = NULL; + gboolean parse_success = room_parse_room_jid(from, &room, &nick); + + if (parse_success) { + char *message = xmpp_stanza_get_text(body); + prof_handle_room_history(room, nick, tv_stamp, message); + g_free(room); + g_free(nick); + } else { + log_error("Could not parse room jid: %s", from); + } } } else { log_error("Couldn't parse datetime string receiving room history: %s", utc_stamp); @@ -408,12 +415,18 @@ _message_handler(xmpp_conn_t * const conn, } else { xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, "body"); if (body != NULL) { - char *message = xmpp_stanza_get_text(body); - char **tokens = g_strsplit(from, "/", 0); - char *room_jid = tokens[0]; - char *nick = tokens[1]; - prof_handle_room_message(room_jid, nick, message); - g_strfreev(tokens); + char *room = NULL; + char *nick = NULL; + gboolean parse_success = room_parse_room_jid(from, &room, &nick); + + if (parse_success) { + char *message = xmpp_stanza_get_text(body); + prof_handle_room_message(room, nick, message); + g_free(room); + g_free(nick); + } else { + log_error("Could not parse room jid: %s", from); + } } } @@ -729,3 +742,4 @@ _jabber_send_state(const char * const recipient, const char * const state) chat_session_set_sent(recipient); } + |