File u_tigervnc-ignore-epipe-on-write.patch of Package tigervnc.openSUSE_Leap_42.2_Update

Author: Michal Srb <msrb@suse.com>
Subject: Ignore EPIPE on write.
Patch-Mainline: To be upstreamed
References: bnc#864676

If the VNC server closes connection after our last read and before this write, we will report error message about EPIPE.
This situation is no error, however, we should quit normally same as when we find out that connection was closed during read.
Index: common/rdr/FdOutStream.cxx
===================================================================
--- common/rdr/FdOutStream.cxx	(revision 5178)
+++ common/rdr/FdOutStream.cxx	(working copy)
@@ -225,7 +225,12 @@
     // network connections.  Should in fact never ever happen...
   } while (n < 0 && (errno == EWOULDBLOCK));
 
-  if (n < 0) throw SystemException("write",errno);
+  if (n < 0) {
+    if(errno == EPIPE)
+      n = length; // Ignore EPIPE and fake successfull write, it doesn't matter that we are writing to closed socket, we will find out once we try to read from it.
+    else
+      throw SystemException("write", errno);
+  }
 
   gettimeofday(&lastWrite, NULL);
 
openSUSE Build Service is sponsored by