--- a/libpurple/network.c Sun Dec 27 23:43:49 2015 -0600
+++ b/libpurple/network.c Mon Dec 28 01:05:18 2015 -0600
@@ -63,38 +63,6 @@
# define HX_SIZE_OF_IFREQ(a) sizeof(a)
-#ifdef HAVE_NETWORKMANAGER
-#include <dbus/dbus-glib.h>
-#include <NetworkManager.h>
-#if !defined(NM_CHECK_VERSION)
-#define NM_CHECK_VERSION(x,y,z) 0
-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;
-static int current_network_count;
-/* Mutex for the other global vars */
-#if GLIB_CHECK_VERSION(2, 32, 0)
-static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
-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;
struct _PurpleNetworkListenData {
@@ -106,13 +74,7 @@
-#ifdef HAVE_NETWORKMANAGER
-static NMState nm_get_network_state(void);
-#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
-static gboolean force_online;
+static gboolean force_online = FALSE; /* Cached IP addresses for STUN and TURN servers (set globally in prefs) */
static gchar *stun_ip = NULL;
@@ -838,145 +800,19 @@
purple_network_is_available(void)
-#ifdef HAVE_NETWORKMANAGER
- nm_state = nm_get_network_state();
- if (nm_state == NM_STATE_UNKNOWN)
- purple_debug_warning("network", "NetworkManager not active. Assuming connection exists.\n");
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_CONNECTED_LOCAL:
- case NM_STATE_CONNECTED_SITE:
- case NM_STATE_CONNECTED_GLOBAL:
- case NM_STATE_CONNECTED:
- return (current_network_count > 0 || force_online);
+ return g_network_monitor_get_network_available(g_network_monitor_get_default()); purple_network_force_online()
-#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
-#ifdef HAVE_NETWORKMANAGER
-nm_update_state(NMState state)
- NMState prev = nm_state;
- PurpleConnectionUiOps *ui_ops = purple_connections_get_ui_ops();
- purple_signal_emit(purple_network_get_handle(), "network-configuration-changed", NULL);
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_CONNECTED_LOCAL:
- case NM_STATE_CONNECTED_SITE:
- case NM_STATE_CONNECTED_GLOBAL:
- case NM_STATE_CONNECTED:
- /* Call res_init in case DNS servers have changed */
- /* update STUN IP in case we it changed (theoretically we could
- have gone from IPv4 to IPv6, f.ex. or we were previously
- 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();
- case NM_STATE_CONNECTING:
- case NM_STATE_DISCONNECTED:
-#if NM_CHECK_VERSION(0,8,992)
- case NM_STATE_DISCONNECTING:
- if (prev != NM_STATE_CONNECTED && prev != NM_STATE_UNKNOWN)
- if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
- ui_ops->network_disconnected();
-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);
-nm_get_network_state(void)
- NMState state = NM_STATE_UNKNOWN;
- return NM_STATE_UNKNOWN;
- if (!dbus_g_proxy_call(nm_proxy, "state", &err, G_TYPE_INVALID, G_TYPE_UINT, &state, G_TYPE_INVALID)) {
- return NM_STATE_UNKNOWN;
-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);
purple_network_ip_lookup_cb(GObject *sender, GAsyncResult *result, gpointer data) {
@@ -1170,29 +1006,6 @@
purple_network_init(void)
-#ifdef HAVE_NETWORKMANAGER
- 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 */
- 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);
- g_thread_unref(thread);
- purple_debug_error("network", "Couldn't create Network Monitor thread: %s\n", err ? err->message : "");
purple_prefs_add_none ("/purple/network");
purple_prefs_add_string("/purple/network/stun_server", "");
purple_prefs_add_string("/purple/network/turn_server", "");
@@ -1210,34 +1023,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);
- purple_debug_warning("network", "Error connecting to DBus System service: %s.\n", error->message);
- nm_proxy = dbus_g_proxy_new_for_name(nm_conn,
- 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_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);
purple_signal_register(purple_network_get_handle(), "network-configuration-changed",
purple_marshal_VOID, G_TYPE_NONE, 0);
@@ -1258,49 +1043,6 @@
purple_network_uninit(void)
-#ifdef HAVE_NETWORKMANAGER
- 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));
- dbus_g_proxy_disconnect_signal(dbus_proxy, "NameOwnerChanged", G_CALLBACK(nm_dbus_name_owner_changed_cb), NULL);
- g_object_unref(G_OBJECT(dbus_proxy));
- dbus_g_connection_unref(nm_conn);
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_static_mutex_lock(&mutex);
- network_initialized = FALSE;
- if (network_change_handle != NULL) {
- /* 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",
- network_change_handle = NULL;
-#if GLIB_CHECK_VERSION(2, 32, 0)
- g_mutex_unlock(&mutex);
- g_static_mutex_unlock(&mutex);
purple_signal_unregister(purple_network_get_handle(),
"network-configuration-changed");
--- a/pidgin/gtkdialogs.c Sun Dec 27 23:43:49 2015 -0600
+++ b/pidgin/gtkdialogs.c Mon Dec 28 01:05:18 2015 -0600
@@ -676,14 +676,6 @@
-#ifdef HAVE_NETWORKMANAGER
- g_string_append(str, "<dt>NetworkManager:</dt><dd>Enabled</dd>");
- g_string_append(str, "<dt>NetworkManager:</dt><dd>Disabled</dd>");
g_string_append(str, "<dt>Network Security Services (NSS):</dt><dd>Enabled</dd>");