besser82 / rpms / pidgin

Forked from rpms/pidgin 6 years ago
Clone
Blob Blame History Raw
This forces resolv.conf to be re-read every time a connection is made instead of only if NetworkManager establishes a new connection.
This prevents some error cases for roving clients, especially if they do not use NetworkManager.

diff -urN pidgin-2.5.3.orig/libpurple/connection.c pidgin-2.5.3/libpurple/connection.c
--- pidgin-2.5.3.orig/libpurple/connection.c	2008-12-20 19:38:16.000000000 -0500
+++ pidgin-2.5.3/libpurple/connection.c	2008-12-26 16:55:32.000000000 -0500
@@ -42,6 +42,10 @@
 
 #define KEEPALIVE_INTERVAL 30
 
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
 static GList *connections = NULL;
 static GList *connections_connecting = NULL;
 static PurpleConnectionUiOps *connection_ui_ops = NULL;
@@ -161,6 +165,9 @@
 
 	purple_signal_emit(purple_connections_get_handle(), "signing-on", gc);
 
+	/* Re-read resolv.conf and friends in case DNS servers have changed */
+	res_init();
+
 	if (regist)
 	{
 		purple_debug_info("connection", "Registering.  gc = %p\n", gc);
diff -urN pidgin-2.5.3.orig/libpurple/network.c pidgin-2.5.3/libpurple/network.c
--- pidgin-2.5.3.orig/libpurple/network.c	2008-12-20 19:38:16.000000000 -0500
+++ pidgin-2.5.3/libpurple/network.c	2008-12-26 16:55:32.000000000 -0500
@@ -633,8 +633,6 @@
 	switch(state)
 	{
 		case NM_STATE_CONNECTED:
-			/* Call res_init in case DNS servers have changed */
-			res_init();
 			if (ui_ops != NULL && ui_ops->network_connected != NULL)
 				ui_ops->network_connected();
 			break;