| 72 static void |
72 static void |
| 73 jabber_buddy_resource_free(JabberBuddyResource *jbr) |
73 jabber_buddy_resource_free(JabberBuddyResource *jbr) |
| 74 { |
74 { |
| 75 g_return_if_fail(jbr != NULL); |
75 g_return_if_fail(jbr != NULL); |
| 76 |
76 |
| 77 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr); |
|
| 78 |
|
| 79 g_list_free_full(jbr->commands, (GDestroyNotify)jabber_adhoc_commands_free); |
77 g_list_free_full(jbr->commands, (GDestroyNotify)jabber_adhoc_commands_free); |
| 80 g_list_free_full(jbr->caps.exts, g_free); |
78 g_list_free_full(jbr->caps.exts, g_free); |
| 81 g_free(jbr->name); |
79 g_free(jbr->name); |
| 82 g_free(jbr->status); |
80 g_free(jbr->status); |
| 83 g_free(jbr->thread_id); |
81 g_free(jbr->thread_id); |
| 90 void jabber_buddy_free(JabberBuddy *jb) |
88 void jabber_buddy_free(JabberBuddy *jb) |
| 91 { |
89 { |
| 92 g_return_if_fail(jb != NULL); |
90 g_return_if_fail(jb != NULL); |
| 93 |
91 |
| 94 g_free(jb->error_msg); |
92 g_free(jb->error_msg); |
| 95 while(jb->resources) |
93 g_list_free_full(jb->resources, (GDestroyNotify)jabber_buddy_resource_free); |
| 96 jabber_buddy_resource_free(jb->resources->data); |
|
| 97 |
94 |
| 98 g_free(jb); |
95 g_free(jb); |
| 99 } |
96 } |
| 100 |
97 |
| 101 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name, |
98 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name, |
| 254 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource); |
251 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource); |
| 255 |
252 |
| 256 if(!jbr) |
253 if(!jbr) |
| 257 return; |
254 return; |
| 258 |
255 |
| |
256 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr); |
| 259 jabber_buddy_resource_free(jbr); |
257 jabber_buddy_resource_free(jbr); |
| 260 } |
258 } |
| 261 |
259 |
| 262 /******* |
260 /******* |
| 263 * This is the old vCard stuff taken from the old prpl. vCards, by definition |
261 * This is the old vCard stuff taken from the old prpl. vCards, by definition |