Mercurial > pidgin.yaz
diff libpurple/network.c @ 21466:7a05b6f84545
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 13 Nov 2007 04:29:06 +0000 |
parents | 35b4f1dc4c8d |
children | 14afe5a92fc2 65ef019c000b |
line wrap: on
line diff
--- a/libpurple/network.c Tue Nov 13 02:20:58 2007 +0000 +++ b/libpurple/network.c Tue Nov 13 04:29:06 2007 +0000 @@ -259,6 +259,12 @@ return FALSE; } +static gboolean listen_map_external = TRUE; +void purple_network_listen_map_external(gboolean map_external) +{ + listen_map_external = map_external; +} + static PurpleNetworkListenData * purple_network_do_listen(unsigned short port, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data) { @@ -356,11 +362,17 @@ listen_data->cb_data = cb_data; listen_data->socket_type = socket_type; + if (!listen_map_external) + { + purple_debug_info("network", "Skipping external port mapping.\n"); + /* The pmp_map_cb does what we want to do */ + purple_timeout_add(0, purple_network_finish_pmp_map_cb, listen_data); + } /* Attempt a NAT-PMP Mapping, which will return immediately */ - if (purple_pmp_create_map(((socket_type == SOCK_STREAM) ? PURPLE_PMP_TYPE_TCP : PURPLE_PMP_TYPE_UDP), + else if (purple_pmp_create_map(((socket_type == SOCK_STREAM) ? PURPLE_PMP_TYPE_TCP : PURPLE_PMP_TYPE_UDP), actual_port, actual_port, PURPLE_PMP_LIFETIME)) { - purple_debug_info("network", "Created NAT-PMP mapping on port %i\n",actual_port); + purple_debug_info("network", "Created NAT-PMP mapping on port %i\n", actual_port); /* We want to return listen_data now, and on the next run loop trigger the cb and destroy listen_data */ purple_timeout_add(0, purple_network_finish_pmp_map_cb, listen_data); } @@ -567,7 +579,7 @@ retval = WSALookupServiceEnd(h); - g_idle_add(wpurple_network_change_thread_cb, NULL); + purple_timeout_add(0, wpurple_network_change_thread_cb, NULL); }