--- a/libpurple/protocols/bonjour/jabber.c Fri Feb 22 18:54:43 2013 -0500
+++ b/libpurple/protocols/bonjour/jabber.c Sun Feb 24 11:37:14 2013 -0500
@@ -411,16 +411,18 @@
_client_socket_handler(gpointer data, gint socket, PurpleInputCondition condition)
BonjourJabberConversation *bconv = data;
- gint len, message_length;
static char message[4096];
/* Read the data from the socket */
- if ((len = recv(socket, message, sizeof(message) - 1, 0)) == -1) {
+ if ((len = recv(socket, message, sizeof(message) - 1, 0)) < 0) { /* There have been an error reading from the socket */
+ if (len != -1 || errno != EAGAIN) { const char *err = g_strerror(errno);
- purple_debug_warning("bonjour", "receive error: %s\n", err ? err : "(null)");
+ purple_debug_warning("bonjour", + "receive of %" G_GSSIZE_FORMAT " error: %s\n", + len, err ? err : "(null)"); bonjour_jabber_close_conversation(bconv);
@@ -439,19 +441,12 @@
purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (name) ? name : "(unknown)");
bonjour_jabber_stream_ended(bconv);
- message[message_length] = '\0';
- while (message_length > 0 && g_ascii_iscntrl(message[message_length - 1])) {
- message[message_length - 1] = '\0';
- purple_debug_info("bonjour", "Receive: -%s- %d bytes\n", message, len);
- bonjour_parser_process(bconv, message, message_length);
+ purple_debug_info("bonjour", "Receive: -%s- %" G_GSSIZE_FORMAT " bytes\n", message, len); + bonjour_parser_process(bconv, message, len); struct _stream_start_data {