svn commit: r248651 - stable/9/lib/libc/net
Jilles Tjoelker
jilles at FreeBSD.org
Sat Mar 23 16:02:50 UTC 2013
Author: jilles
Date: Sat Mar 23 16:02:49 2013
New Revision: 248651
URL: http://svnweb.freebsd.org/changeset/base/248651
Log:
MFC r248252: libc: Avoid SIGPIPE when nscd closes the connection
unexpectedly.
It is almost always a bug if nscd closes the connection unexpectedly but
programs should not be killed with SIGPIPE for it.
Modified:
stable/9/lib/libc/net/nscachedcli.c
Directory Properties:
stable/9/lib/libc/ (props changed)
Modified: stable/9/lib/libc/net/nscachedcli.c
==============================================================================
--- stable/9/lib/libc/net/nscachedcli.c Sat Mar 23 15:50:34 2013 (r248650)
+++ stable/9/lib/libc/net/nscachedcli.c Sat Mar 23 16:02:49 2013 (r248651)
@@ -75,9 +75,10 @@ safe_write(struct cached_connection_ *co
nevents = _kevent(connection->write_queue, NULL, 0, &eventlist,
1, &timeout);
if ((nevents == 1) && (eventlist.filter == EVFILT_WRITE)) {
- s_result = _write(connection->sockfd, data + result,
+ s_result = _sendto(connection->sockfd, data + result,
eventlist.data < data_size - result ?
- eventlist.data : data_size - result);
+ eventlist.data : data_size - result, MSG_NOSIGNAL,
+ NULL, 0);
if (s_result == -1)
return (-1);
else
@@ -175,8 +176,8 @@ send_credentials(struct cached_connectio
nevents = _kevent(connection->write_queue, NULL, 0, &eventlist, 1,
NULL);
if (nevents == 1 && eventlist.filter == EVFILT_WRITE) {
- result = (_sendmsg(connection->sockfd, &cred_hdr, 0) == -1) ?
- -1 : 0;
+ result = (_sendmsg(connection->sockfd, &cred_hdr,
+ MSG_NOSIGNAL) == -1) ? -1 : 0;
EV_SET(&eventlist, connection->sockfd, EVFILT_WRITE, EV_ADD,
0, 0, NULL);
_kevent(connection->write_queue, &eventlist, 1, NULL, 0, NULL);
More information about the svn-src-stable-9
mailing list