1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
Description: fix high CPU usage
Author: Brian Tarricone <brian@tarricone.org>
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523312
Bug: http://bugzilla.xfce.org/show_bug.cgi?id=4494
Applied-Upstream: 1.1.1, http://git.xfce.org/panel-plugins/xfce4-mailwatch-plugin/commit/?id=491acb38de89ab845d6a80f23c36d3df8da70421
diff --git a/libmailwatch-core/mailwatch-net-conn.c b/libmailwatch-core/mailwatch-net-conn.c
index 9264376..0f88678 100644
--- a/libmailwatch-core/mailwatch-net-conn.c
+++ b/libmailwatch-core/mailwatch-net-conn.c
@@ -767,10 +767,16 @@ xfce_mailwatch_net_conn_recv_internal(XfceMailwatchNetConn *net_conn,
return -1;
} else if(!block)
return 0;
- } while(ret < 0 && EINTR == errno && !TIMER_EXPIRED(RECV_TIMEOUT)
- && SHOULD_CONTINUE(net_conn));
+ } while((ret == 0 || (ret < 0 && EINTR == errno))
+ && !TIMER_EXPIRED(RECV_TIMEOUT) && SHOULD_CONTINUE(net_conn));
- if(!SHOULD_CONTINUE(net_conn)) {
+ if(ret < 0 && EINTR != errno) {
+ if(error) {
+ g_set_error(error, XFCE_MAILWATCH_ERROR,
+ XFCE_MAILWATCH_ERROR_FAILED, strerror(errno));
+ }
+ return -1;
+ } else if(!SHOULD_CONTINUE(net_conn)) {
if(error) {
g_set_error(error, XFCE_MAILWATCH_ERROR,
XFCE_MAILWATCH_ERROR_ABORTED, _("Operation aborted"));
|