Changeset: 45303902bb42 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=45303902bb42
Modified Files:
        monetdb5/modules/mal/mal_mapi.c
        testing/process.py
        tools/mserver/mserver5.1.in
Branch: mtest
Log Message:

Add a possibility to use IP port in UNIX domain socket file name.


diffs (54 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
@@ -761,7 +761,12 @@ SERVERlisten(int port, const char *usock
 #endif
 
                userver.sun_family = AF_UNIX;
-               memcpy(userver.sun_path, usockfile, ulen + 1);
+               const char *p;
+               if ((p = strstr(usockfile, "${PORT}")) != NULL)
+                       snprintf(userver.sun_path, sizeof(userver.sun_path),
+                                        "%.*s%d%s", (int) (p - usockfile), 
usockfile, port<0?0:port, p + 7);
+               else
+                       memcpy(userver.sun_path, usockfile, ulen + 1);
                length = (SOCKLEN) sizeof(userver);
                if (remove(usockfile) == -1 && errno != ENOENT) {
                        char *e = createException(IO, "mal_mapi.listen", 
OPERATION_FAILED ": remove UNIX socket file: %s",
diff --git a/testing/process.py b/testing/process.py
--- a/testing/process.py
+++ b/testing/process.py
@@ -363,7 +363,10 @@ class server(Popen):
             cmd.append('mapi_port=%s' % mapiport)
             if usock is not None:
                 cmd.append('--set')
-                cmd.append('mapi_usock=%s.%s' % (usock, mapiport))
+                if mapiport == '0':
+                    cmd.append('mapi_usock=%s.${PORT}' % usock)
+                else:
+                    cmd.append('mapi_usock=%s.%s' % (usock, mapiport))
         for i in range(len(cmd)):
             if cmd[i].startswith('--dbpath='):
                 dbpath = cmd[i][9:]
diff --git a/tools/mserver/mserver5.1.in b/tools/mserver/mserver5.1.in
--- a/tools/mserver/mserver5.1.in
+++ b/tools/mserver/mserver5.1.in
@@ -268,8 +268,16 @@ Default
 .TP
 .B mapi_usock
 The name of the UNIX domain socket file on which the server will
-listen for connections.  Note, there is usually a severe
-system-imposed length limitation on the name of the file.
+listen for connections.
+If the name contains the substring
+.BR ${PORT} ,
+that part will be replaced by the decimal representation of the TCP/IP
+port (option
+.BR mapi_port ).
+This is especially useful if the port was specified as
+.BR 0 .
+Note, there is usually a severe system-imposed length limitation on
+the name of the file.
 .TP
 .B mapi_port
 The TCP/IP port number on which the server will listen for
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to