pidgin/pidgin

Merged in rw_grim/pidgin/replace-nm-with-gio (pull request #4)

Replace nm with gio
--- a/ChangeLog.API Tue Dec 29 23:38:32 2015 -0600
+++ b/ChangeLog.API Wed Dec 30 19:55:07 2015 -0600
@@ -412,6 +412,7 @@
* _PurpleSoundEventID
* _XMLNodeType
* account-authorization-requested-with-message signal
+ * network-configuration-changed signal
* purple_account_add_buddies_with_invite
* purple_account_add_buddy_with_invite
* purple_account_set_current_error
--- a/configure.ac Tue Dec 29 23:38:32 2015 -0600
+++ b/configure.ac Wed Dec 30 19:55:07 2015 -0600
@@ -1513,9 +1513,6 @@
AC_ARG_ENABLE(dbus,
[AS_HELP_STRING([--disable-dbus], [disable D-Bus support])], ,
enable_dbus="$is_not_win32")
-AC_ARG_ENABLE(nm,
- [AS_HELP_STRING([--disable-nm], [disable NetworkManager support (requires D-Bus)])],
- enable_nm=$enableval, enable_nm="$is_not_win32")
if test "x$enable_dbus" = "xyes" ; then
AC_CHECK_PROG(enable_dbus, dbus-binding-tool, yes, no)
@@ -1536,26 +1533,6 @@
fi])
fi
-dnl Check for NetworkManager.h; if we don't have it, oh well
-if test "x$enable_dbus" = "xyes" ; then
- if test "x$enable_nm" = "xyes" ; then
- PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
- AC_SUBST(NETWORKMANAGER_CFLAGS)
- AC_SUBST(NETWORKMANAGER_LIBS)
- AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
- ], [
- enable_nm=no
- if test "x$force_deps" = "xyes" ; then
- AC_MSG_ERROR([
-NetworkManager development headers not found.
-Use --disable-nm if you do not need NetworkManager support.
-])
- fi])
- fi
-else
- enable_nm=no
-fi
-
dnl #######################################################################
dnl # Check for Unity and Messaging Menu
dnl #######################################################################
@@ -2336,7 +2313,6 @@
eval eval echo D-Bus services directory...... : $DBUS_SERVICES_DIR
fi
echo Build with GNU Libidn......... : $enable_idn
-echo Build with NetworkManager..... : $enable_nm
echo SSL Library/Libraries......... : $msg_ssl
if test "x$SSL_CERTIFICATES_DIR" != "x" ; then
eval eval echo SSL CA certificates directory. : $SSL_CERTIFICATES_DIR
--- a/libpurple/nat-pmp.c Tue Dec 29 23:38:32 2015 -0600
+++ b/libpurple/nat-pmp.c Wed Dec 30 19:55:07 2015 -0600
@@ -24,6 +24,8 @@
* OF SUCH DAMAGE.
*/
+#include <gio/gio.h>
+
#include "internal.h"
#include "nat-pmp.h"
#include "debug.h"
@@ -514,7 +516,7 @@
}
static void
-purple_pmp_network_config_changed_cb(void *data)
+purple_pmp_network_config_changed_cb(GNetworkMonitor *monitor, gboolean avialable, gpointer data)
{
pmp_info.status = PURPLE_PMP_STATUS_UNDISCOVERED;
g_free(pmp_info.publicip);
@@ -532,9 +534,10 @@
void
purple_pmp_init()
{
- purple_signal_connect(purple_network_get_handle(), "network-configuration-changed",
- purple_pmp_get_handle(), PURPLE_CALLBACK(purple_pmp_network_config_changed_cb),
- GINT_TO_POINTER(0));
+ g_signal_connect(g_network_monitor_get_default(),
+ "network-changed",
+ G_CALLBACK(purple_pmp_network_config_changed_cb),
+ NULL);
}
#else /* #ifdef NET_RT_DUMP */
char *
--- a/libpurple/network.c Tue Dec 29 23:38:32 2015 -0600
+++ b/libpurple/network.c Wed Dec 30 19:55:07 2015 -0600
@@ -63,38 +63,6 @@
# define HX_SIZE_OF_IFREQ(a) sizeof(a)
#endif
-#ifdef HAVE_NETWORKMANAGER
-#include <dbus/dbus-glib.h>
-#include <NetworkManager.h>
-
-#if !defined(NM_CHECK_VERSION)
-#define NM_CHECK_VERSION(x,y,z) 0
-#endif
-
-static DBusGConnection *nm_conn = NULL;
-static DBusGProxy *nm_proxy = NULL;
-static DBusGProxy *dbus_proxy = NULL;
-static NMState nm_state = NM_STATE_UNKNOWN;
-static gboolean have_nm_state = FALSE;
-
-#elif defined _WIN32
-static int current_network_count;
-
-/* Mutex for the other global vars */
-#if GLIB_CHECK_VERSION(2, 32, 0)
-static GMutex mutex;
-#else
-static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
-#endif
-
-static gboolean network_initialized = FALSE;
-static HANDLE network_change_handle = NULL;
-static int (WSAAPI *MyWSANSPIoctl) (
- HANDLE hLookup, DWORD dwControlCode, LPVOID lpvInBuffer,
- DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer,
- LPDWORD lpcbBytesReturned, LPWSACOMPLETION lpCompletion) = NULL;
-#endif
-
struct _PurpleNetworkListenData {
int listenfd;
int socket_type;
@@ -106,13 +74,7 @@
int timer;
};
-#ifdef HAVE_NETWORKMANAGER
-static NMState nm_get_network_state(void);
-#endif
-
-#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
-static gboolean force_online;
-#endif
+static gboolean force_online = FALSE;
/* Cached IP addresses for STUN and TURN servers (set globally in prefs) */
static gchar *stun_ip = NULL;
@@ -592,391 +554,22 @@
return ntohs(addr.sin_port);
}
-#ifdef _WIN32
-#ifndef NS_NLA
-#define NS_NLA 15
-#endif
-static gint
-wpurple_get_connected_network_count(void)
-{
- gint net_cnt = 0;
-
- WSAQUERYSET qs;
- HANDLE h;
- gint retval;
- int errorid;
-
- memset(&qs, 0, sizeof(WSAQUERYSET));
- qs.dwSize = sizeof(WSAQUERYSET);
- qs.dwNameSpace = NS_NLA;
-
- retval = WSALookupServiceBegin(&qs, LUP_RETURN_ALL, &h);
- if (retval != ERROR_SUCCESS) {
- gchar *msg;
- errorid = WSAGetLastError();
- msg = g_win32_error_message(errorid);
- purple_debug_warning("network", "Couldn't retrieve NLA SP lookup handle. "
- "NLA service is probably not running. Message: %s (%d).\n",
- msg, errorid);
- g_free(msg);
-
- return -1;
- } else {
- char buf[4096];
- WSAQUERYSET *res = (LPWSAQUERYSET) buf;
- DWORD size = sizeof(buf);
- while ((retval = WSALookupServiceNext(h, 0, &size, res)) == ERROR_SUCCESS) {
- net_cnt++;
- purple_debug_info("network", "found network '%s'\n",
- res->lpszServiceInstanceName ? res->lpszServiceInstanceName : "(NULL)");
- size = sizeof(buf);
- }
-
- errorid = WSAGetLastError();
- if (!(errorid == WSA_E_NO_MORE || errorid == WSAENOMORE)) {
- gchar *msg = g_win32_error_message(errorid);
- purple_debug_error("network", "got unexpected NLA response %s (%d)\n", msg, errorid);
- g_free(msg);
-
- net_cnt = -1;
- }
-
- retval = WSALookupServiceEnd(h);
- }
-
- return net_cnt;
-
-}
-
-static gboolean wpurple_network_change_thread_cb(gpointer data)
-{
- gint new_count;
- PurpleConnectionUiOps *ui_ops = purple_connections_get_ui_ops();
-
- new_count = wpurple_get_connected_network_count();
-
- if (new_count < 0)
- return FALSE;
-
- purple_debug_info("network", "Received Network Change Notification. Current network count is %d, previous count was %d.\n", new_count, current_network_count);
-
- purple_signal_emit(purple_network_get_handle(), "network-configuration-changed", NULL);
-
- if (new_count > 0 && ui_ops != NULL && ui_ops->network_connected != NULL) {
- ui_ops->network_connected();
- } else if (new_count == 0 && current_network_count > 0 &&
- ui_ops != NULL && ui_ops->network_disconnected != NULL) {
- ui_ops->network_disconnected();
- }
-
- current_network_count = new_count;
-
- return FALSE;
-}
-
-static gboolean _print_debug_msg(gpointer data) {
- gchar *msg = data;
- purple_debug_warning("network", "%s", msg);
- g_free(msg);
- return FALSE;
-}
-
-static gpointer wpurple_network_change_thread(gpointer data)
-{
- WSAQUERYSET qs;
- WSAEVENT *nla_event;
- time_t last_trigger = time(NULL) - 31;
- char buf[4096];
- WSAQUERYSET *res = (LPWSAQUERYSET) buf;
- DWORD size;
-
- if ((nla_event = WSACreateEvent()) == WSA_INVALID_EVENT) {
- int errorid = WSAGetLastError();
- gchar *msg = g_win32_error_message(errorid);
- purple_timeout_add(0, _print_debug_msg,
- g_strdup_printf("Couldn't create WSA event. "
- "Message: %s (%d).\n", msg, errorid));
- g_free(msg);
- g_thread_exit(NULL);
- return NULL;
- }
-
- while (TRUE) {
- int retval;
- DWORD retLen = 0;
- WSACOMPLETION completion;
- WSAOVERLAPPED overlapped;
-
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_lock(&mutex);
-#else
- g_static_mutex_lock(&mutex);
-#endif
- if (network_initialized == FALSE) {
- /* purple_network_uninit has been called */
- WSACloseEvent(nla_event);
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
- g_thread_exit(NULL);
- return NULL;
- }
-
- if (network_change_handle == NULL) {
- memset(&qs, 0, sizeof(WSAQUERYSET));
- qs.dwSize = sizeof(WSAQUERYSET);
- qs.dwNameSpace = NS_NLA;
- if (WSALookupServiceBegin(&qs, 0, &network_change_handle) == SOCKET_ERROR) {
- int errorid = WSAGetLastError();
- gchar *msg = g_win32_error_message(errorid);
- purple_timeout_add(0, _print_debug_msg,
- g_strdup_printf("Couldn't retrieve NLA SP lookup handle. "
- "NLA service is probably not running. Message: %s (%d).\n",
- msg, errorid));
- g_free(msg);
- WSACloseEvent(nla_event);
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
- g_thread_exit(NULL);
- return NULL;
- }
- }
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
-
- memset(&completion, 0, sizeof(WSACOMPLETION));
- completion.Type = NSP_NOTIFY_EVENT;
- overlapped.hEvent = nla_event;
- completion.Parameters.Event.lpOverlapped = &overlapped;
-
- if (MyWSANSPIoctl(network_change_handle, SIO_NSP_NOTIFY_CHANGE, NULL, 0, NULL, 0, &retLen, &completion) == SOCKET_ERROR) {
- int errorid = WSAGetLastError();
- if (errorid == WSA_INVALID_HANDLE) {
- purple_timeout_add(0, _print_debug_msg,
- g_strdup("Invalid NLA handle; resetting.\n"));
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_lock(&mutex);
-#else
- g_static_mutex_lock(&mutex);
-#endif
- retval = WSALookupServiceEnd(network_change_handle);
- network_change_handle = NULL;
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
- continue;
- /* WSA_IO_PENDING indicates successful async notification will happen */
- } else if (errorid != WSA_IO_PENDING) {
- gchar *msg = g_win32_error_message(errorid);
- purple_timeout_add(0, _print_debug_msg,
- g_strdup_printf("Unable to wait for changes. Message: %s (%d).\n",
- msg, errorid));
- g_free(msg);
- }
- }
-
- /* Make sure at least 30 seconds have elapsed since the last
- * notification so we don't peg the cpu if this keeps changing. */
- if ((time(NULL) - last_trigger) < 30)
- Sleep(30000);
-
- /* This will block until NLA notifies us */
- retval = WaitForSingleObjectEx(nla_event, WSA_INFINITE, TRUE);
-
- last_trigger = time(NULL);
-
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_lock(&mutex);
-#else
- g_static_mutex_lock(&mutex);
-#endif
- if (network_initialized == FALSE) {
- /* Time to die */
- WSACloseEvent(nla_event);
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
- g_thread_exit(NULL);
- return NULL;
- }
-
- size = sizeof(buf);
- while ((retval = WSALookupServiceNext(network_change_handle, 0, &size, res)) == ERROR_SUCCESS) {
- /*purple_timeout_add(0, _print_debug_msg,
- g_strdup_printf("thread found network '%s'\n",
- res->lpszServiceInstanceName ? res->lpszServiceInstanceName : "(NULL)"));*/
- size = sizeof(buf);
- }
-
- WSAResetEvent(nla_event);
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
-
- purple_timeout_add(0, wpurple_network_change_thread_cb, NULL);
- }
-
- g_thread_exit(NULL);
- return NULL;
-}
-#endif
-
gboolean
purple_network_is_available(void)
{
-#ifdef HAVE_NETWORKMANAGER
- if (force_online)
+ if(force_online) {
return TRUE;
-
- if (!have_nm_state)
- {
- have_nm_state = TRUE;
- nm_state = nm_get_network_state();
- if (nm_state == NM_STATE_UNKNOWN)
- purple_debug_warning("network", "NetworkManager not active. Assuming connection exists.\n");
}
- switch (nm_state)
- {
- case NM_STATE_UNKNOWN:
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_CONNECTED_LOCAL:
- case NM_STATE_CONNECTED_SITE:
- case NM_STATE_CONNECTED_GLOBAL:
-#else
- case NM_STATE_CONNECTED:
-#endif
- return TRUE;
- default:
- break;
- }
-
- return FALSE;
-
-#elif defined _WIN32
- return (current_network_count > 0 || force_online);
-#else
- return TRUE;
-#endif
+ return g_network_monitor_get_network_available(g_network_monitor_get_default());
}
void
purple_network_force_online()
{
-#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
force_online = TRUE;
-#endif
}
-#ifdef HAVE_NETWORKMANAGER
-static void
-nm_update_state(NMState state)
-{
- NMState prev = nm_state;
- PurpleConnectionUiOps *ui_ops = purple_connections_get_ui_ops();
-
- have_nm_state = TRUE;
- nm_state = state;
-
- purple_signal_emit(purple_network_get_handle(), "network-configuration-changed", NULL);
-
- switch(state)
- {
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_CONNECTED_LOCAL:
- case NM_STATE_CONNECTED_SITE:
- case NM_STATE_CONNECTED_GLOBAL:
-#else
- case NM_STATE_CONNECTED:
-#endif
- /* Call res_init in case DNS servers have changed */
- res_init();
- /* update STUN IP in case we it changed (theoretically we could
- have gone from IPv4 to IPv6, f.ex. or we were previously
- offline */
- purple_network_set_stun_server(
- purple_prefs_get_string("/purple/network/stun_server"));
- purple_network_set_turn_server(
- purple_prefs_get_string("/purple/network/turn_server"));
-
- if (ui_ops != NULL && ui_ops->network_connected != NULL)
- ui_ops->network_connected();
- break;
- case NM_STATE_ASLEEP:
- case NM_STATE_CONNECTING:
- case NM_STATE_DISCONNECTED:
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_DISCONNECTING:
-#endif
- if (prev != NM_STATE_CONNECTED && prev != NM_STATE_UNKNOWN)
- break;
- if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
- ui_ops->network_disconnected();
- break;
- case NM_STATE_UNKNOWN:
- default:
- break;
- }
-}
-
-static void
-nm_state_change_cb(DBusGProxy *proxy, NMState state, gpointer user_data)
-{
- purple_debug_info("network", "Got StateChange from NetworkManager: %d.\n", state);
- nm_update_state(state);
-}
-
-static NMState
-nm_get_network_state(void)
-{
- GError *err = NULL;
- NMState state = NM_STATE_UNKNOWN;
-
- if (!nm_proxy)
- return NM_STATE_UNKNOWN;
-
- if (!dbus_g_proxy_call(nm_proxy, "state", &err, G_TYPE_INVALID, G_TYPE_UINT, &state, G_TYPE_INVALID)) {
- g_error_free(err);
- return NM_STATE_UNKNOWN;
- }
-
- return state;
-}
-
-static void
-nm_dbus_name_owner_changed_cb(DBusGProxy *proxy, char *service, char *old_owner, char *new_owner, gpointer user_data)
-{
- if (g_str_equal(service, NM_DBUS_SERVICE)) {
- gboolean old_owner_good = old_owner && (old_owner[0] != '\0');
- gboolean new_owner_good = new_owner && (new_owner[0] != '\0');
-
- purple_debug_info("network", "Got NameOwnerChanged signal, service = '%s', old_owner = '%s', new_owner = '%s'\n", service, old_owner, new_owner);
- if (!old_owner_good && new_owner_good) { /* Equivalent to old ServiceCreated signal */
- purple_debug_info("network", "NetworkManager has started.\n");
- nm_update_state(nm_get_network_state());
- } else if (old_owner_good && !new_owner_good) { /* Equivalent to old ServiceDeleted signal */
- purple_debug_info("network", "NetworkManager has gone away.\n");
- nm_update_state(NM_STATE_UNKNOWN);
- }
- }
-}
-
-#endif
-
static void
purple_network_ip_lookup_cb(GObject *sender, GAsyncResult *result, gpointer data) {
GError *error = NULL;
@@ -1170,29 +763,6 @@
void
purple_network_init(void)
{
-#ifdef HAVE_NETWORKMANAGER
- GError *error = NULL;
-#endif
-#ifdef _WIN32
- GError *err = NULL;
- gint cnt = wpurple_get_connected_network_count();
-
- network_initialized = TRUE;
- if (cnt < 0) /* Assume there is a network */
- current_network_count = 1;
- /* Don't listen for network changes if we can't tell anyway */
- else {
- current_network_count = cnt;
- if ((MyWSANSPIoctl = (void*) wpurple_find_and_loadproc("ws2_32.dll", "WSANSPIoctl"))) {
- GThread *thread = g_thread_try_new("Network Monitor thread", wpurple_network_change_thread, NULL, &err);
- if (thread)
- g_thread_unref(thread);
- else
- purple_debug_error("network", "Couldn't create Network Monitor thread: %s\n", err ? err->message : "");
- }
- }
-#endif
-
purple_prefs_add_none ("/purple/network");
purple_prefs_add_string("/purple/network/stun_server", "");
purple_prefs_add_string("/purple/network/turn_server", "");
@@ -1210,37 +780,6 @@
if(purple_prefs_get_bool("/purple/network/map_ports") || purple_prefs_get_bool("/purple/network/auto_ip"))
purple_upnp_discover(NULL, NULL);
-#ifdef HAVE_NETWORKMANAGER
- nm_conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
- if (!nm_conn) {
- purple_debug_warning("network", "Error connecting to DBus System service: %s.\n", error->message);
- } else {
- nm_proxy = dbus_g_proxy_new_for_name(nm_conn,
- NM_DBUS_SERVICE,
- NM_DBUS_PATH,
- NM_DBUS_INTERFACE);
- /* NM 0.6 signal */
- dbus_g_proxy_add_signal(nm_proxy, "StateChange", G_TYPE_UINT, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal(nm_proxy, "StateChange",
- G_CALLBACK(nm_state_change_cb), NULL, NULL);
- /* NM 0.7 and later signal */
- dbus_g_proxy_add_signal(nm_proxy, "StateChanged", G_TYPE_UINT, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal(nm_proxy, "StateChanged",
- G_CALLBACK(nm_state_change_cb), NULL, NULL);
-
- dbus_proxy = dbus_g_proxy_new_for_name(nm_conn,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
- dbus_g_proxy_add_signal(dbus_proxy, "NameOwnerChanged", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal(dbus_proxy, "NameOwnerChanged",
- G_CALLBACK(nm_dbus_name_owner_changed_cb), NULL, NULL);
- }
-#endif
-
- purple_signal_register(purple_network_get_handle(), "network-configuration-changed",
- purple_marshal_VOID, G_TYPE_NONE, 0);
-
purple_pmp_init();
purple_upnp_init();
@@ -1258,52 +797,6 @@
void
purple_network_uninit(void)
{
-#ifdef HAVE_NETWORKMANAGER
- if (nm_proxy) {
- dbus_g_proxy_disconnect_signal(nm_proxy, "StateChange", G_CALLBACK(nm_state_change_cb), NULL);
- dbus_g_proxy_disconnect_signal(nm_proxy, "StateChanged", G_CALLBACK(nm_state_change_cb), NULL);
- g_object_unref(G_OBJECT(nm_proxy));
- }
- if (dbus_proxy) {
- dbus_g_proxy_disconnect_signal(dbus_proxy, "NameOwnerChanged", G_CALLBACK(nm_dbus_name_owner_changed_cb), NULL);
- g_object_unref(G_OBJECT(dbus_proxy));
- }
- if (nm_conn)
- dbus_g_connection_unref(nm_conn);
-#endif
-
-#ifdef _WIN32
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_lock(&mutex);
-#else
- g_static_mutex_lock(&mutex);
-#endif
- network_initialized = FALSE;
- if (network_change_handle != NULL) {
- int retval;
- /* Trigger the NLA thread to stop waiting for network changes. Not
- * doing this can cause hangs on WSACleanup. */
- purple_debug_warning("network", "Terminating the NLA thread\n");
- if ((retval = WSALookupServiceEnd(network_change_handle)) == SOCKET_ERROR) {
- int errorid = WSAGetLastError();
- gchar *msg = g_win32_error_message(errorid);
- purple_debug_warning("network", "Unable to kill NLA thread. Message: %s (%d).\n",
- msg, errorid);
- g_free(msg);
- }
- network_change_handle = NULL;
-
- }
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
-#else
- g_static_mutex_unlock(&mutex);
-#endif
-
-#endif
- purple_signal_unregister(purple_network_get_handle(),
- "network-configuration-changed");
-
g_free(stun_ip);
g_hash_table_destroy(upnp_port_mappings);
--- a/libpurple/upnp.c Tue Dec 29 23:38:32 2015 -0600
+++ b/libpurple/upnp.c Wed Dec 30 19:55:07 2015 -0600
@@ -18,6 +18,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
+#include <gio/gio.h>
+
#include "internal.h"
#include "upnp.h"
@@ -1001,7 +1003,7 @@
}
static void
-purple_upnp_network_config_changed_cb(void *data)
+purple_upnp_network_config_changed_cb(GNetworkMonitor *monitor, gboolean available, gpointer data)
{
/* Reset the control_info to default values */
control_info.status = PURPLE_UPNP_STATUS_UNDISCOVERED;
@@ -1013,18 +1015,11 @@
control_info.lookup_time = 0;
}
-static void*
-purple_upnp_get_handle(void)
-{
- static int handle;
-
- return &handle;
-}
-
void
purple_upnp_init()
{
- purple_signal_connect(purple_network_get_handle(), "network-configuration-changed",
- purple_upnp_get_handle(), PURPLE_CALLBACK(purple_upnp_network_config_changed_cb),
- NULL);
+ g_signal_connect(g_network_monitor_get_default(),
+ "network-changed",
+ G_CALLBACK(purple_upnp_network_config_changed_cb),
+ NULL);
}
--- a/pidgin/gtkdialogs.c Tue Dec 29 23:38:32 2015 -0600
+++ b/pidgin/gtkdialogs.c Wed Dec 30 19:55:07 2015 -0600
@@ -676,14 +676,6 @@
#endif
#endif
-#ifndef _WIN32
-#ifdef HAVE_NETWORKMANAGER
- g_string_append(str, "<dt>NetworkManager:</dt><dd>Enabled</dd>");
-#else
- g_string_append(str, "<dt>NetworkManager:</dt><dd>Disabled</dd>");
-#endif
-#endif
-
#ifdef HAVE_NSS
g_string_append(str, "<dt>Network Security Services (NSS):</dt><dd>Enabled</dd>");
#else
--- a/pidgin/win32/gtkwin32dep.c Tue Dec 29 23:38:32 2015 -0600
+++ b/pidgin/win32/gtkwin32dep.c Wed Dec 30 19:55:07 2015 -0600
@@ -187,27 +187,19 @@
#define PIDGIN_WM_PROTOCOL_HANDLE (WM_APP + 14)
static void*
-winpidgin_netconfig_changed_cb(void *data)
+winpidgin_netconfig_changed_cb(GNetworkMonitor *monitor, gboolean available, gpointer data)
{
pwm_handles_connections = FALSE;
return NULL;
}
-static void*
-winpidgin_get_handle(void)
-{
- static int handle;
-
- return &handle;
-}
-
static gboolean
winpidgin_pwm_reconnect()
{
- purple_signal_disconnect(purple_network_get_handle(), "network-configuration-changed",
- winpidgin_get_handle(), PURPLE_CALLBACK(winpidgin_netconfig_changed_cb));
-
+ g_signal_handlers_disconnect_by_func(g_network_monitor_get_default,
+ G_CALLBACK(winpidgin_netconfig_changed_cb),
+ NULL);
if (pwm_handles_connections == TRUE) {
PurpleConnectionUiOps *ui_ops = pidgin_connections_get_ui_ops();
@@ -246,8 +238,10 @@
if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
ui_ops->network_disconnected();
- purple_signal_connect(purple_network_get_handle(), "network-configuration-changed", winpidgin_get_handle(),
- PURPLE_CALLBACK(winpidgin_netconfig_changed_cb), NULL);
+ g_signal_connect(g_network_monitor_get_default(),
+ "network-changed",
+ G_CALLBACK(winpidgin_netconfig_changed_cb),
+ NULL);
return TRUE;
} else if (wparam == PBT_APMRESUMESUSPEND) {