From: Jim S. <jse...@us...> - 2002-06-27 23:24:42
|
Update of /cvsroot/gaim/gaim/src/protocols/jabber In directory usw-pr-cvs1:/tmp/cvs-serv31971/src/protocols/jabber Modified Files: jabber.c Log Message: Fix for null-resource JIDs not being handled in .59. (Thanks, Nathan Walp) Index: jabber.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/jabber/jabber.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- jabber.c 19 Jun 2002 21:20:08 -0000 1.56 +++ jabber.c 27 Jun 2002 23:24:39 -0000 1.57 @@ -1022,7 +1022,7 @@ } else if(!res) { /* we're looking for the default priority, so... */ if(((jab_res_info) resources->data)->priority >= jri->priority) jri = (jab_res_info) resources->data; - } else { + } else if(((jab_res_info)resources->data)->name) { if(!strcasecmp(((jab_res_info) resources->data)->name, res)) { jri = (jab_res_info) resources->data; break; @@ -1046,9 +1046,14 @@ { struct jabber_buddy_data *jbd = jabber_find_buddy(gc, buddy); - if(jbd && res) { - char *who = g_strdup_printf("%s/%s", buddy, res); - jab_res_info jri = jabber_find_resource(gc, who); + if(jbd) { + char *who; + jab_res_info jri; + if(res) + who = g_strdup_printf("%s/%s", buddy, res); + else + who = g_strdup(buddy); + jri = jabber_find_resource(gc, who); g_free(who); if(!jri) { jri = g_new0(struct jabber_resource_info, 1); @@ -1067,12 +1072,18 @@ static void jabber_remove_resource(struct gaim_connection *gc, char *buddy, char *res) { struct jabber_buddy_data *jbd = jabber_find_buddy(gc, buddy); - if(jbd && res) { - char *who = g_strdup_printf("%s/%s", buddy, res); - jab_res_info jri = jabber_find_resource(gc, who); + if(jbd) { + char *who; + jab_res_info jri; + if(res) + who = g_strdup_printf("%s/%s", buddy, res); + else + who = g_strdup(buddy); + jri = jabber_find_resource(gc, who); g_free(who); if(jri) { - g_free(jri->name); + if(jri->name) + g_free(jri->name); if(jri->away_msg) g_free(jri->away_msg); jbd->resources = g_slist_remove(jbd->resources, jri); @@ -1102,7 +1113,7 @@ char *msg = NULL; jab_res_info jri = NULL; - if(!p || !p->from || !p->from->resource || !p->from->user) + if(!p || !p->from || !p->from->user) return; jri = jabber_find_resource(GJ_GC(gjc), jid_full(p->from)); |