[vlc-commits] network: use send(MSG_NOSIGNAL) in net_Write()

Rémi Denis-Courmont git at videolan.org
Tue May 19 22:30:16 CEST 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue May 19 23:28:54 2015 +0300| [5287f8e10cd8542a672785d49b315c3eefcd2981] | committer: Rémi Denis-Courmont

network: use send(MSG_NOSIGNAL) in net_Write()

This ensures that SIGPIPE is not emitted if the connection is closed by
the other end. Using send() is fine given that all net_Write(),
net_vaPrintf() and net_Printf() call sites use (only) sockets.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5287f8e10cd8542a672785d49b315c3eefcd2981
---

 src/network/io.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/network/io.c b/src/network/io.c
index 586765d..48a03a3 100644
--- a/src/network/io.c
+++ b/src/network/io.c
@@ -354,7 +354,7 @@ error:
 
 #undef net_Write
 /**
- * Writes data to a file descriptor.
+ * Writes data to a socket.
  * This blocks until all data is written or an error occurs.
  *
  * This function is a cancellation point.
@@ -407,11 +407,7 @@ ssize_t net_Write( vlc_object_t *p_this, int fd,
             }
         }
 
-#ifdef _WIN32
-        ssize_t val = send (fd, p_data, i_data, 0);
-#else
-        ssize_t val = write (fd, p_data, i_data);
-#endif
+        ssize_t val = send (fd, p_data, i_data, MSG_NOSIGNAL);
         if (val == -1)
         {
             if (errno == EINTR)



More information about the vlc-commits mailing list