diff libpurple/protocols/bonjour/jabber.c @ 27371:96cafa3d271c

Make some error messages more uniform. Include output from g_strerror() in the message when possible--users might not always know exactly what it means, but it might help some people, and for people who don't understand the error message it will be easier for them to ask about it, or to search for other people with the same problem.
author Mark Doliner <mark@kingant.net>
date Mon, 06 Jul 2009 05:22:25 +0000
parents d078048fb03a
children 755219afed9f
line wrap: on
line diff
--- 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;
 	}