summaryrefslogtreecommitdiff
path: root/src/idle-muc-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/idle-muc-manager.c')
-rw-r--r--src/idle-muc-manager.c55
1 files changed, 32 insertions, 23 deletions
diff --git a/src/idle-muc-manager.c b/src/idle-muc-manager.c
index e2400cc..5cba4d7 100644
--- a/src/idle-muc-manager.c
+++ b/src/idle-muc-manager.c
@@ -186,13 +186,14 @@ static void idle_muc_manager_class_init(IdleMUCManagerClass *klass) {
static IdleParserHandlerResult _numeric_error_handler(IdleParser *parser, IdleParserMessageCode code, GValueArray *args, gpointer user_data) {
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (!chan)
return IDLE_PARSER_HANDLER_RESULT_HANDLED;
@@ -226,13 +227,14 @@ static IdleParserHandlerResult _numeric_topic_handler(IdleParser *parser, IdlePa
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
const gchar *topic = g_value_get_string(g_value_array_get_nth(args, 1));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_topic(chan, topic);
@@ -245,13 +247,14 @@ static IdleParserHandlerResult _numeric_topic_stamp_handler(IdleParser *parser,
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
TpHandle toucher_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
time_t touched = g_value_get_uint(g_value_array_get_nth(args, 2));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
idle_connection_emit_queued_aliases_changed(priv->conn);
@@ -267,6 +270,7 @@ static IdleParserHandlerResult _invite_handler(IdleParser *parser, IdleParserMes
TpHandle inviter_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
TpHandle invited_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 2));
+ IdleMUCChannel *chan;
if (invited_handle != priv->conn->parent.self_handle)
return IDLE_PARSER_HANDLER_RESULT_HANDLED;
@@ -276,7 +280,7 @@ static IdleParserHandlerResult _invite_handler(IdleParser *parser, IdleParserMes
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
idle_connection_emit_queued_aliases_changed(priv->conn);
@@ -294,6 +298,7 @@ static IdleParserHandlerResult _join_handler(IdleParser *parser, IdleParserMessa
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(manager);
TpHandle joiner_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
+ IdleMUCChannel *chan;
idle_connection_emit_queued_aliases_changed(priv->conn);
@@ -302,7 +307,7 @@ static IdleParserHandlerResult _join_handler(IdleParser *parser, IdleParserMessa
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (!chan) {
/* TODO: If we're in "bouncer mode", maybe these should be Requested:
@@ -321,13 +326,14 @@ static IdleParserHandlerResult _kick_handler(IdleParser *parser, IdleParserMessa
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
TpHandle kicked_handle = g_value_get_uint(g_value_array_get_nth(args, 2));
const gchar *message = (args->n_values == 4) ? g_value_get_string(g_value_array_get_nth(args, 3)) : NULL;
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_kick(chan, kicked_handle, kicker_handle, message);
@@ -338,13 +344,14 @@ static IdleParserHandlerResult _kick_handler(IdleParser *parser, IdleParserMessa
static IdleParserHandlerResult _numeric_namereply_handler(IdleParser *parser, IdleParserMessageCode code, GValueArray *args, gpointer user_data) {
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_namereply(chan, args);
@@ -355,13 +362,14 @@ static IdleParserHandlerResult _numeric_namereply_handler(IdleParser *parser, Id
static IdleParserHandlerResult _numeric_namereply_end_handler(IdleParser *parser, IdleParserMessageCode code, GValueArray *args, gpointer user_data) {
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_namereply_end(chan);
@@ -372,13 +380,14 @@ static IdleParserHandlerResult _numeric_namereply_end_handler(IdleParser *parser
static IdleParserHandlerResult _mode_handler(IdleParser *parser, IdleParserMessageCode code, GValueArray *args, gpointer user_data) {
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_mode(chan, args);
@@ -417,22 +426,22 @@ static IdleParserHandlerResult _notice_privmsg_handler(IdleParser *parser, IdleP
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(manager);
TpHandle sender_handle = (TpHandle) g_value_get_uint(g_value_array_get_nth(args, 0));
TpHandle room_handle = (TpHandle) g_value_get_uint(g_value_array_get_nth(args, 1));
+ IdleMUCChannel *chan;
+ TpChannelTextMessageType type;
+ gchar *body;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
/* XXX: just check for chan == NULL here and bail with NOT_HANDLED if room
* was not found ? Currently we go through all of the decoding of the
* message, but don't actually deliver the message to a channel if chan is
* NULL, and then we return 'HANDLED', which seems wrong
*/
- TpChannelTextMessageType type;
- gchar *body;
-
if (code == IDLE_PARSER_PREFIXCMD_NOTICE_CHANNEL) {
type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE;
body = idle_ctcp_kill_blingbling(g_value_get_string(g_value_array_get_nth(args, 2)));
@@ -456,13 +465,14 @@ static IdleParserHandlerResult _part_handler(IdleParser *parser, IdleParserMessa
TpHandle leaver_handle = g_value_get_uint(g_value_array_get_nth(args, 0));
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
const gchar *message = (args->n_values == 3) ? g_value_get_string(g_value_array_get_nth(args, 2)) : NULL;
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan)
idle_muc_channel_part(chan, leaver_handle, message);
@@ -500,13 +510,14 @@ static IdleParserHandlerResult _topic_handler(IdleParser *parser, IdleParserMess
TpHandle room_handle = g_value_get_uint(g_value_array_get_nth(args, 1));
const gchar *topic = (args->n_values == 3) ? g_value_get_string(g_value_array_get_nth(args, 2)) : NULL;
time_t stamp = time(NULL);
+ IdleMUCChannel *chan;
if (!priv->channels) {
IDLE_DEBUG("Channels hash table missing, ignoring...");
return IDLE_PARSER_HANDLER_RESULT_NOT_HANDLED;
}
- IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
+ chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (chan) {
if (topic)
@@ -532,9 +543,7 @@ static void _muc_manager_close_all(IdleMUCManager *manager)
return;
}
- GHashTable *tmp = priv->channels;
- priv->channels = NULL;
- g_hash_table_destroy(tmp);
+ tp_clear_pointer (&priv->channels, g_hash_table_destroy);
}
static void
@@ -691,16 +700,16 @@ static void _channel_join_ready_cb(IdleMUCChannel *chan, guint err, gpointer use
TpChannelManager *manager = TP_CHANNEL_MANAGER(user_data);
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(user_data);
GSList *reqs = take_request_tokens(user_data, chan);
+ gint err_code = 0;
+ const gchar* err_msg = NULL;
+ TpHandle handle;
+ GSList *l;
if (err == MUC_CHANNEL_JOIN_ERROR_NONE) {
tp_channel_manager_emit_new_channel(manager, (TpExportableChannel *) chan, reqs);
goto out;
}
- gint err_code = 0;
- const gchar* err_msg = NULL;
- TpHandle handle;
-
g_object_get(chan, "handle", &handle, NULL);
switch (err) {
@@ -724,7 +733,7 @@ static void _channel_join_ready_cb(IdleMUCChannel *chan, guint err, gpointer use
break;
}
- for (GSList *l = reqs; reqs != NULL; reqs = reqs->next) {
+ for (l = reqs; reqs != NULL; reqs = reqs->next) {
tp_channel_manager_emit_request_failed(manager, l->data, TP_ERROR, err_code, err_msg);
}