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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list