# HG changeset patch # User Elliott Sales de Andrade # Date 1248150687 0 # Node ID 8e31eec7b6213285e35f620ec59d948c5d50d038 # Parent 97ba0d9e6e54ae3c832b87906682a179cd2cd724 Propagate connect errors from the MSN proxy callback to the servconn error handling function so that the real proxy error is displayed instead of a generic "Connect Error". Fixes #8280. diff -r 97ba0d9e6e54 -r 8e31eec7b621 libpurple/protocols/msn/httpconn.c --- a/libpurple/protocols/msn/httpconn.c Tue Jul 21 03:57:20 2009 +0000 +++ b/libpurple/protocols/msn/httpconn.c Tue Jul 21 04:31:27 2009 +0000 @@ -293,7 +293,7 @@ purple_debug_error("msn", "HTTP: servconn %03d read error, " "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n", servconn->num, len, error, g_strerror(errno)); - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ, NULL); return; } @@ -309,7 +309,7 @@ { /* Either we must wait for more input, or something went wrong */ if (error) - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ, NULL); return; } @@ -317,7 +317,7 @@ if (error) { purple_debug_error("msn", "HTTP: Special error\n"); - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ, NULL); return; } @@ -368,7 +368,7 @@ return; /* Error! */ - msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE); + msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE, NULL); return; } @@ -394,7 +394,7 @@ if ((res <= 0) && ((errno != EAGAIN) && (errno != EWOULDBLOCK))) { - msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE); + msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_WRITE, NULL); return FALSE; } @@ -672,7 +672,7 @@ { purple_debug_error("msn", "HTTP: Connection error: %s\n", error_message ? error_message : "(null)"); - msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_CONNECT); + msn_servconn_got_error(httpconn->servconn, MSN_SERVCONN_ERROR_CONNECT, error_message); } } diff -r 97ba0d9e6e54 -r 8e31eec7b621 libpurple/protocols/msn/servconn.c --- a/libpurple/protocols/msn/servconn.c Tue Jul 21 03:57:20 2009 +0000 +++ b/libpurple/protocols/msn/servconn.c Tue Jul 21 04:31:27 2009 +0000 @@ -123,27 +123,29 @@ **************************************************************************/ void -msn_servconn_got_error(MsnServConn *servconn, MsnServConnError error) +msn_servconn_got_error(MsnServConn *servconn, MsnServConnError error, + const char *reason) { MsnSession *session = servconn->session; MsnServConnType type = servconn->type; - const char *reason; const char *names[] = { "Notification", "Switchboard" }; const char *name; name = names[type]; - switch (error) - { - case MSN_SERVCONN_ERROR_CONNECT: - reason = _("Unable to connect"); break; - case MSN_SERVCONN_ERROR_WRITE: - reason = _("Writing error"); break; - case MSN_SERVCONN_ERROR_READ: - reason = _("Reading error"); break; - default: - reason = _("Unknown error"); break; + if (reason == NULL) { + switch (error) + { + case MSN_SERVCONN_ERROR_CONNECT: + reason = _("Unable to connect"); break; + case MSN_SERVCONN_ERROR_WRITE: + reason = _("Writing error"); break; + case MSN_SERVCONN_ERROR_READ: + reason = _("Reading error"); break; + default: + reason = _("Unknown error"); break; + } } purple_debug_error("msn", "Connection error from %s server (%s): %s\n", @@ -196,7 +198,7 @@ else { purple_debug_error("msn", "Connection error: %s\n", error_message); - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_CONNECT); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_CONNECT, error_message); } } @@ -344,7 +346,7 @@ if (ret < 0 && errno == EAGAIN) return; else if (ret <= 0) { - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE, NULL); return; } @@ -401,7 +403,7 @@ if (ret == -1) { - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE, NULL); } servconn_timeout_renew(servconn); @@ -427,7 +429,7 @@ purple_debug_error("msn", "servconn %03d read error, " "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n", servconn->num, len, errno, g_strerror(errno)); - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); + msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ, NULL); return; } diff -r 97ba0d9e6e54 -r 8e31eec7b621 libpurple/protocols/msn/servconn.h --- a/libpurple/protocols/msn/servconn.h Tue Jul 21 03:57:20 2009 +0000 +++ b/libpurple/protocols/msn/servconn.h Tue Jul 21 04:31:27 2009 +0000 @@ -170,7 +170,8 @@ * @param servconn The servconn. * @param error The error that happened. */ -void msn_servconn_got_error(MsnServConn *servconn, MsnServConnError error); +void msn_servconn_got_error(MsnServConn *servconn, MsnServConnError error, + const char *reason); /** * Process the data in servconn->rx_buf. This is called after reading