aboutsummaryrefslogtreecommitdiff
path: root/libsylph/session.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-01-22 08:10:11 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-01-22 08:10:11 +0000
commit2a1835bfa4813590131f9da2d511bbbcdad15717 (patch)
tree73c58f4ac769cbe75554408d655dfde5bc1071fa /libsylph/session.c
parent3145665c922ead3c2de272eb0ad54c30c228046b (diff)
prevented WSAEWOULDBLOCK on sending/receiving in Win32.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1500 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph/session.c')
-rw-r--r--libsylph/session.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libsylph/session.c b/libsylph/session.c
index 73691dca..5ebb564d 100644
--- a/libsylph/session.c
+++ b/libsylph/session.c
@@ -276,8 +276,13 @@ static gboolean session_ping_cb(gpointer data)
}
if (tv_result.tv_sec * G_USEC_PER_SEC + tv_result.tv_usec >
G_USEC_PER_SEC) {
+ SockFlags save_flags;
+
debug_print("state machine freeze for 1 second detected, forcing dispatch.\n");
+ save_flags = sock->flags;
+ SOCK_UNSET_FLAGS(sock->flags, SOCK_CHECK_IO);
sock->callback(sock, sock->condition, sock->data);
+ sock->flags = save_flags;
}
}