Changeset: 198a7fddad2f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=198a7fddad2f Modified Files: tools/merovingian/ChangeLog.Aug2011 tools/merovingian/daemon/merovingian.c Branch: Aug2011 Log Message:
merovingian: don't just unlink socket files Only unlink socket files when there is reason to believe that any existing socket files should be stale. Also, don't cleanup, if we never started a socket. With these actions, an accidential start of another monetdbd using the same port won't just destroy the socket files from the other. diffs (44 lines): diff --git a/tools/merovingian/ChangeLog.Aug2011 b/tools/merovingian/ChangeLog.Aug2011 --- a/tools/merovingian/ChangeLog.Aug2011 +++ b/tools/merovingian/ChangeLog.Aug2011 @@ -1,3 +1,7 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog +* Sun Nov 6 2011 Fabian Groffen <[email protected]> +- Fixed a bug where monetdbd's socket files from /tmp were removed when + a second monetdbd was attempted to be started using the same port. + 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 @@ -888,8 +888,6 @@ main(int argc, char *argv[]) msab_init(dbfarm, NULL); - unlink(control_usock); - unlink(mapi_usock); /* write out the pid */ Mfprintf(pidfile, "%d\n", (int)d->pid); @@ -902,6 +900,7 @@ main(int argc, char *argv[]) /* open up connections */ if ( (e = openConnectionTCP(&sock, port, stdout)) == NO_ERR && + (unlink(control_usock) | unlink(mapi_usock) | 1) && (e = openConnectionUNIX(&socku, mapi_usock, 0, stdout)) == NO_ERR && (e = openConnectionUDP(&usock, discoveryport)) == NO_ERR && (e = openConnectionUNIX(&unsock, control_usock, S_IRWXO, _mero_ctlout)) == NO_ERR && @@ -976,10 +975,10 @@ main(int argc, char *argv[]) } /* control channel is already closed at this point */ - if (unlink(control_usock) == -1) + if (unsock != -1 && unlink(control_usock) == -1) Mfprintf(stderr, "unable to unlink control socket '%s': %s\n", control_usock, strerror(errno)); - if (unlink(mapi_usock) == -1) + if (socku != -1 && unlink(mapi_usock) == -1) Mfprintf(stderr, "unable to unlink mapi socket '%s': %s\n", mapi_usock, strerror(errno)); _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
