Mercurial > pidgin
comparison libpurple/protocols/bonjour/mdns_howl.c @ 19573:affacee881e8
Fix a couple potential leaks and prevent the avahi record resolver from being freed multiple times.
Thanks to Lennart from the Avahi team for suggestions on how to improve the avahi implementation.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Sun, 02 Sep 2007 17:54:44 +0000 |
parents | c1546f6c0432 |
children | 44b4e8bd759b |
comparison
equal
deleted
inserted
replaced
19572:cfc4e56a6a1e | 19573:affacee881e8 |
---|---|
69 sw_text_record_iterator iterator; | 69 sw_text_record_iterator iterator; |
70 char key[SW_TEXT_RECORD_MAX_LEN]; | 70 char key[SW_TEXT_RECORD_MAX_LEN]; |
71 char value[SW_TEXT_RECORD_MAX_LEN]; | 71 char value[SW_TEXT_RECORD_MAX_LEN]; |
72 sw_uint32 value_length; | 72 sw_uint32 value_length; |
73 | 73 |
74 /* TODO: We want to keep listening for updates*/ | |
74 sw_discovery_cancel(discovery, oid); | 75 sw_discovery_cancel(discovery, oid); |
75 | 76 |
76 /* create a buddy record */ | 77 /* create a buddy record */ |
77 buddy = bonjour_buddy_new(name, account); | 78 buddy = bonjour_buddy_new(name, account); |
78 | 79 |
98 bonjour_buddy_delete(buddy); | 99 bonjour_buddy_delete(buddy); |
99 return SW_DISCOVERY_E_UNKNOWN; | 100 return SW_DISCOVERY_E_UNKNOWN; |
100 } | 101 } |
101 | 102 |
102 /* Add or update the buddy in our buddy list */ | 103 /* Add or update the buddy in our buddy list */ |
103 bonjour_buddy_add_to_purple(buddy); | 104 bonjour_buddy_add_to_purple(buddy, NULL); |
104 | 105 |
105 return SW_OKAY; | 106 return SW_OKAY; |
106 } | 107 } |
107 | 108 |
108 static sw_result HOWL_API | 109 static sw_result HOWL_API |
147 break; | 148 break; |
148 case SW_DISCOVERY_BROWSE_REMOVE_SERVICE: | 149 case SW_DISCOVERY_BROWSE_REMOVE_SERVICE: |
149 purple_debug_info("bonjour", "_browser_reply --> Remove service\n"); | 150 purple_debug_info("bonjour", "_browser_reply --> Remove service\n"); |
150 gb = purple_find_buddy(account, name); | 151 gb = purple_find_buddy(account, name); |
151 if (gb != NULL) | 152 if (gb != NULL) |
152 { | |
153 bonjour_buddy_delete(gb->proto_data); | |
154 purple_blist_remove_buddy(gb); | 153 purple_blist_remove_buddy(gb); |
155 } | |
156 break; | 154 break; |
157 case SW_DISCOVERY_BROWSE_RESOLVED: | 155 case SW_DISCOVERY_BROWSE_RESOLVED: |
158 purple_debug_info("bonjour", "_browse_reply --> Resolved\n"); | 156 purple_debug_info("bonjour", "_browse_reply --> Resolved\n"); |
159 break; | 157 break; |
160 default: | 158 default: |