Mercurial > pidgin.yaz
comparison libpurple/network.c @ 21697:65ef019c000b
Allow UPnP and NAT-PMP port mapping to be disabled via a pref. This means that UPnP discovery will not occur if this new pref and the "Autodetect IP Address" pref are both unchecked. Fixes #4157.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Fri, 30 Nov 2007 23:25:28 +0000 |
parents | 7a05b6f84545 |
children | b63b2a5c2d05 |
comparison
equal
deleted
inserted
replaced
21696:fded60f269bc | 21697:65ef019c000b |
---|---|
180 if (!purple_prefs_get_bool("/purple/network/auto_ip")) { | 180 if (!purple_prefs_get_bool("/purple/network/auto_ip")) { |
181 ip = purple_network_get_public_ip(); | 181 ip = purple_network_get_public_ip(); |
182 /* Make sure the IP address entered by the user is valid */ | 182 /* Make sure the IP address entered by the user is valid */ |
183 if ((ip != NULL) && (purple_network_ip_atoi(ip) != NULL)) | 183 if ((ip != NULL) && (purple_network_ip_atoi(ip) != NULL)) |
184 return ip; | 184 return ip; |
185 } | 185 } else { |
186 | 186 /* Check if STUN discovery was already done */ |
187 /* Check if STUN discovery was already done */ | 187 stun = purple_stun_discover(NULL); |
188 stun = purple_stun_discover(NULL); | 188 if ((stun != NULL) && (stun->status == PURPLE_STUN_STATUS_DISCOVERED)) |
189 if ((stun != NULL) && (stun->status == PURPLE_STUN_STATUS_DISCOVERED)) | 189 return stun->publicip; |
190 return stun->publicip; | 190 |
191 | 191 /* Attempt to get the IP from a NAT device using UPnP */ |
192 /* Attempt to get the IP from a NAT device using UPnP */ | 192 ip = purple_upnp_get_public_ip(); |
193 ip = purple_upnp_get_public_ip(); | 193 if (ip != NULL) |
194 if (ip != NULL) | 194 return ip; |
195 return ip; | 195 |
196 | 196 /* Attempt to get the IP from a NAT device using NAT-PMP */ |
197 /* Attempt to get the IP from a NAT device using NAT-PMP */ | 197 ip = purple_pmp_get_public_ip(); |
198 ip = purple_pmp_get_public_ip(); | 198 if (ip != NULL) |
199 if (ip != NULL) | 199 return ip; |
200 return ip; | 200 } |
201 | 201 |
202 /* Just fetch the IP of the local system */ | 202 /* Just fetch the IP of the local system */ |
203 return purple_network_get_local_system_ip(fd); | 203 return purple_network_get_local_system_ip(fd); |
204 } | 204 } |
205 | 205 |
360 listen_data->retry = TRUE; | 360 listen_data->retry = TRUE; |
361 listen_data->cb = cb; | 361 listen_data->cb = cb; |
362 listen_data->cb_data = cb_data; | 362 listen_data->cb_data = cb_data; |
363 listen_data->socket_type = socket_type; | 363 listen_data->socket_type = socket_type; |
364 | 364 |
365 if (!listen_map_external) | 365 if (!listen_map_external || !purple_prefs_get_bool("/purple/network/map_ports")) |
366 { | 366 { |
367 purple_debug_info("network", "Skipping external port mapping.\n"); | 367 purple_debug_info("network", "Skipping external port mapping.\n"); |
368 /* The pmp_map_cb does what we want to do */ | 368 /* The pmp_map_cb does what we want to do */ |
369 purple_timeout_add(0, purple_network_finish_pmp_map_cb, listen_data); | 369 purple_timeout_add(0, purple_network_finish_pmp_map_cb, listen_data); |
370 } | 370 } |
675 #endif | 675 #endif |
676 | 676 |
677 purple_prefs_add_none ("/purple/network"); | 677 purple_prefs_add_none ("/purple/network"); |
678 purple_prefs_add_bool ("/purple/network/auto_ip", TRUE); | 678 purple_prefs_add_bool ("/purple/network/auto_ip", TRUE); |
679 purple_prefs_add_string("/purple/network/public_ip", ""); | 679 purple_prefs_add_string("/purple/network/public_ip", ""); |
680 purple_prefs_add_bool ("/purple/network/map_ports", TRUE); | |
680 purple_prefs_add_bool ("/purple/network/ports_range_use", FALSE); | 681 purple_prefs_add_bool ("/purple/network/ports_range_use", FALSE); |
681 purple_prefs_add_int ("/purple/network/ports_range_start", 1024); | 682 purple_prefs_add_int ("/purple/network/ports_range_start", 1024); |
682 purple_prefs_add_int ("/purple/network/ports_range_end", 2048); | 683 purple_prefs_add_int ("/purple/network/ports_range_end", 2048); |
683 | 684 |
684 purple_upnp_discover(NULL, NULL); | 685 if(purple_prefs_get_bool("/purple/network/map_ports") || purple_prefs_get_bool("/purple/network/auto_ip")) |
686 purple_upnp_discover(NULL, NULL); | |
685 | 687 |
686 #ifdef HAVE_LIBNM | 688 #ifdef HAVE_LIBNM |
687 nm_context = libnm_glib_init(); | 689 nm_context = libnm_glib_init(); |
688 if(nm_context) | 690 if(nm_context) |
689 nm_callback_idx = libnm_glib_register_callback(nm_context, nm_callback_func, NULL, g_main_context_default()); | 691 nm_callback_idx = libnm_glib_register_callback(nm_context, nm_callback_func, NULL, g_main_context_default()); |