libpurple/protocols/bonjour/jabber.c

changeset 27625
3f5d49f43feb
parent 27343
8a367ee70456
child 29761
0f6862f2782f
--- a/libpurple/protocols/bonjour/jabber.c	Mon Jul 06 05:18:34 2009 +0000
+++ b/libpurple/protocols/bonjour/jabber.c	Mon Jul 06 05:22:25 2009 +0000
@@ -686,11 +686,13 @@
 	struct sockaddr_in my_addr;
 
 	/* Open a listening socket for incoming conversations */
-	if ((jdata->socket = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
-		purple_debug_error("bonjour", "Cannot open socket: %s\n", g_strerror(errno));
+	jdata->socket = socket(PF_INET, SOCK_STREAM, 0);
+	if (jdata->socket < 0) {
+		gchar *buf = g_strdup_printf(_("Unable to create socket: %s"),
+				g_strerror(errno));
 		purple_connection_error_reason(jdata->account->gc,
-			PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-			_("Cannot open socket"));
+			PURPLE_CONNECTION_ERROR_NETWORK_ERROR, buf);
+		g_free(buf);
 		return -1;
 	}
 
@@ -699,25 +701,31 @@
 
 	/* Try to use the specified port - if it isn't available, use a random port */
 	my_addr.sin_port = htons(jdata->port);
-	if (bind(jdata->socket, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) != 0) {
-		purple_debug_info("bonjour", "Unable to bind to specified port %u (%s).\n", jdata->port, g_strerror(errno));
+	if (bind(jdata->socket, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) != 0)
+	{
+		purple_debug_info("bonjour", "Unable to bind to specified "
+				"port %i: %s\n", jdata->port, g_strerror(errno));
 		my_addr.sin_port = 0;
-		if (bind(jdata->socket, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) != 0) {
-			purple_debug_error("bonjour", "Unable to bind to system assigned port (%s).\n", g_strerror(errno));
+		if (bind(jdata->socket, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) != 0)
+		{
+			gchar *buf = g_strdup_printf(_("Unable to bind socket "
+					"to port: %s"), g_strerror(errno));
 			purple_connection_error_reason(jdata->account->gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Could not bind socket to port"));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, buf);
+			g_free(buf);
 			return -1;
 		}
 		jdata->port = purple_network_get_port_from_fd(jdata->socket);
 	}
 
 	/* Attempt to listen on the bound socket */
-	if (listen(jdata->socket, 10) != 0) {
-		purple_debug_error("bonjour", "Cannot listen on socket: %s\n", g_strerror(errno));
+	if (listen(jdata->socket, 10) != 0)
+	{
+		gchar *buf = g_strdup_printf(_("Unable to listen on socket: %s"),
+				g_strerror(errno));
 		purple_connection_error_reason(jdata->account->gc,
-			PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-			_("Could not listen on socket"));
+			PURPLE_CONNECTION_ERROR_NETWORK_ERROR, buf);
+		g_free(buf);
 		return -1;
 	}
 

mercurial