Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Maintenance:2418
xorg-x11-server.openSUSE_12.3_Update
n_VNC-Readd-timeout-when-vnc-viewer-connection-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File n_VNC-Readd-timeout-when-vnc-viewer-connection-breaks.patch of Package xorg-x11-server.openSUSE_12.3_Update
From: Egbert Eich <eich@freedesktop.org> Date: Tue, 6 Sep 2011 07:02:11 +0200 Subject: [PATCH 2/6] VNC: Readd timeout when vnc viewer connection breaks. Patch-Mainline: Currently no upstream project. Git-commit: 759b49ed1c4ea03e45433c92c2fb8c44a60db34a Signed-off: Egbert Eich <eich@suse.de> References: bnc #441935, bnc #403901 This prevents Xvnc busy loop forever waiting for a viewer that no longer response due to network or other issues. Signed-off-by: Egbert Eich <eich@freedesktop.org> --- hw/vnc/sockets.c | 19 +++++-------------- 1 files changed, 5 insertions(+), 14 deletions(-) diff --git a/hw/vnc/sockets.c b/hw/vnc/sockets.c index 39eb88a..ae43ed0 100644 --- a/hw/vnc/sockets.c +++ b/hw/vnc/sockets.c @@ -442,9 +442,7 @@ WriteExact(int sock, char *buf, int len) int n; fd_set fds; struct timeval tv; -#if 0 int totalTimeWaited = 0; -#endif while (len > 0) { n = write(sock, buf, len); @@ -464,7 +462,6 @@ WriteExact(int sock, char *buf, int len) return n; } -#if 0 /* Retry every 5 seconds until we exceed rfbMaxClientWait. We need to do this because select doesn't necessarily return immediately when the other end has gone away */ @@ -473,19 +470,14 @@ WriteExact(int sock, char *buf, int len) FD_SET(sock, &fds); tv.tv_sec = 5; tv.tv_usec = 0; -#else - /* We're in the WakeupHandler now, so don't wait */ - FD_ZERO(&fds); - FD_SET(sock, &fds); - tv.tv_sec = 0; - tv.tv_usec = 0; -#endif n = select(sock+1, NULL, &fds, NULL, &tv); -#if 0 + if (n < 0) { - rfbLogPerror("WriteExact: select"); - return n; + if (errno != EINTR) { + rfbLogPerror("WriteExact: select"); + return n; + } } if (n == 0) { totalTimeWaited += 5000; @@ -496,7 +488,6 @@ WriteExact(int sock, char *buf, int len) } else { totalTimeWaited = 0; } -#endif } } return 1; -- 1.7.3.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor