--- orig/xfce4-mailwatch-plugin-1.0.1/panel-plugin/mailwatch-mailbox-pop3.c 2006-04-20 10:24:36.000000000 +0100 +++ modified/xfce4-mailwatch-plugin-1.0.1/panel-plugin/mailwatch-mailbox-pop3.c 2007-07-01 21:17:31.000000000 +0100 @@ -143,21 +143,26 @@ pop3_recv(XfceMailwatchPOP3Mailbox *pmailbox, gchar *buf, gsize len) { GError *error = NULL; - gssize recvd; + gssize recvd = 0; + gssize recvd_now; - recvd = xfce_mailwatch_net_recv(pmailbox->sockfd, - &pmailbox->security_info, - buf, - len, - &error); + do { + recvd_now = xfce_mailwatch_net_recv(pmailbox->sockfd, + &pmailbox->security_info, + buf + recvd, + len - recvd, + &error); - if(recvd < 0) { + if(recvd_now < 0) { xfce_mailwatch_log_message(pmailbox->mailwatch, XFCE_MAILWATCH_MAILBOX(pmailbox), XFCE_MAILWATCH_LOG_ERROR, error->message); g_error_free(error); - } + return recvd_now; + } + recvd += recvd_now; + } while (recvd <= 2 || buf[recvd-1] != '\n' || buf[recvd-2] != '\r'); return recvd; }