Package: xfce4-mailwatch-plugin / 1.1.0-5

01_fix-cpu-usage.diff Patch series | download
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"));