Changeset: 3db080863222 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3db080863222 Modified Files: monetdb5/modules/mal/mal_mapi.c tools/merovingian/daemon/client.c tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/proxy.c Branch: Jun2016 Log Message:
Shutdown sockets before closing them normally. Not when an error occurred. See bug 4066, comment 25. diffs (55 lines): diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c --- a/monetdb5/modules/mal/mal_mapi.c +++ b/monetdb5/modules/mal/mal_mapi.c @@ -347,6 +347,7 @@ SERVERlistenThread(SOCKET *Sock) { int *c_d; /* filedescriptor, put it in place of msgsock */ cmsg = CMSG_FIRSTHDR(&msgh); + shutdown(msgsock, SHUT_WR); closesocket(msgsock); if (!cmsg || cmsg->cmsg_type != SCM_RIGHTS) { fprintf(stderr, "!mal_mapi.listen: " diff --git a/tools/merovingian/daemon/client.c b/tools/merovingian/daemon/client.c --- a/tools/merovingian/daemon/client.c +++ b/tools/merovingian/daemon/client.c @@ -573,7 +573,6 @@ acceptConnections(int sock, int usock) error: _mero_keep_listening = 0; - shutdown(sock, SHUT_RDWR); closesocket(sock); return(newErr("accept connection: %s", msg)); } diff --git a/tools/merovingian/daemon/controlrunner.c b/tools/merovingian/daemon/controlrunner.c --- a/tools/merovingian/daemon/controlrunner.c +++ b/tools/merovingian/daemon/controlrunner.c @@ -978,6 +978,7 @@ controlRunner(void *d) snprintf(origin, sizeof(origin), "(local)"); ctl_handle_client(origin, msgsock, NULL, NULL); + shutdown(msgsock, SHUT_RDWR); closesocket(msgsock); } while (_mero_keep_listening); shutdown(usock, SHUT_RDWR); diff --git a/tools/merovingian/daemon/merovingian.c b/tools/merovingian/daemon/merovingian.c --- a/tools/merovingian/daemon/merovingian.c +++ b/tools/merovingian/daemon/merovingian.c @@ -850,6 +850,7 @@ main(int argc, char *argv[]) if (ctid != 0) pthread_join(ctid, NULL); if (usock >= 0) { + shutdown(usock, SHUT_RDWR); closesocket(usock); if (dtid != 0) pthread_join(dtid, NULL); diff --git a/tools/merovingian/daemon/proxy.c b/tools/merovingian/daemon/proxy.c --- a/tools/merovingian/daemon/proxy.c +++ b/tools/merovingian/daemon/proxy.c @@ -179,6 +179,7 @@ startProxy(int psock, stream *cfdin, str closesocket(ssock); return(newErr("could not receive initial byte: %s", strerror(errno))); } + shutdown(ssock, SHUT_RDWR); closesocket(ssock); /* psock is the underlying socket of cfdin/cfout which we * passed on to the client; we need to close the socket, but _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list