X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/4b707d8b1701aec2cec7431d4656f771b96a9f00..ac868fa87da18cdebb86103b35ce250bd171f700:/src/event.c diff --git a/src/event.c b/src/event.c index 19fa620..db3dad6 100644 --- a/src/event.c +++ b/src/event.c @@ -5,7 +5,7 @@ * - user-visible check/wait and event-loop-related functions */ /* - * This file is part of adns, which is Copyright (C) 1997, 1998 Ian Jackson + * This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -284,7 +284,9 @@ static int internal_callback(adns_state ads, int maxfd, } else if (callb_checkfd(maxfd,exceptfds,ads->tcpsocket)) { adns__tcp_broken(ads,"select","exceptional condition detected"); } else if (ads->tcpsend.used && callb_checkfd(maxfd,writefds,ads->tcpsocket)) { + adns__sigpipe_protect(ads); r= write(ads->tcpsocket,ads->tcpsend.buf,ads->tcpsend.used); + adns__sigpipe_unprotect(ads); if (r<0) { if (errno!=EAGAIN && errno!=EWOULDBLOCK && errno!=ENOMEM && errno!=EINTR) { adns__tcp_broken(ads,"write",strerror(errno));