summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.c4
-rw-r--r--rfb/rfb.h3
-rw-r--r--sockets.c6
3 files changed, 11 insertions, 2 deletions
diff --git a/main.c b/main.c
index a5607b0..58619ba 100644
--- a/main.c
+++ b/main.c
@@ -59,7 +59,7 @@ void rfbLogEnable(int enabled) {
*/
void
-rfbLog(const char *format, ...)
+rfbDefaultLog(const char *format, ...)
{
va_list args;
char buf[256];
@@ -82,6 +82,8 @@ rfbLog(const char *format, ...)
UNLOCK(logMutex);
}
+rfbLogProc rfbLog=rfbDefaultLog;
+
void rfbLogPerror(const char *str)
{
rfbLog("%s: %s\n", str, strerror(errno));
diff --git a/rfb/rfb.h b/rfb/rfb.h
index 171b076..8c22ce1 100644
--- a/rfb/rfb.h
+++ b/rfb/rfb.h
@@ -729,7 +729,8 @@ extern rfbBool rfbProcessSizeArguments(int* width,int* height,int* bpp,int* argc
/* main.c */
extern void rfbLogEnable(int enabled);
-extern void rfbLog(const char *format, ...);
+typedef void (*rfbLogProc)(const char *format, ...);
+extern rfbLogProc rfbLog;
extern void rfbLogPerror(const char *str);
void rfbScheduleCopyRect(rfbScreenInfoPtr rfbScreen,int x1,int y1,int x2,int y2,int dx,int dy);
diff --git a/sockets.c b/sockets.c
index 5cb833f..0c6173f 100644
--- a/sockets.c
+++ b/sockets.c
@@ -415,6 +415,9 @@ ReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
#ifdef WIN32
errno = WSAGetLastError();
#endif
+ if (errno == EINTR)
+ continue;
+
if (errno != EWOULDBLOCK && errno != EAGAIN) {
return n;
}
@@ -478,6 +481,9 @@ WriteExact(cl, buf, len)
#ifdef WIN32
errno = WSAGetLastError();
#endif
+ if (errno == EINTR)
+ continue;
+
if (errno != EWOULDBLOCK && errno != EAGAIN) {
UNLOCK(cl->outputMutex);
return n;
OpenPOWER on IntegriCloud