Changeset: 670d7d0c5057 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/670d7d0c5057
Modified Files:
        monetdb5/mal/mal_session.c
        monetdb5/modules/mal/mal_mapi.c
Branch: clientinfo
Log Message:

Include portnr in 'peer', and do not copy it to client_hostname


diffs (63 lines):

diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -341,10 +341,8 @@ MSscheduleClient(str command, str peer, 
 
        // at this point username should have being verified
        c->username = GDKstrdup(user);
-       if (peer) {
+       if (peer)
                c->peer = GDKstrdup(peer);
-               c->client_hostname = GDKstrdup(peer);
-       }
 
        /* NOTE ABOUT STARTING NEW THREADS
         * At this point we have conducted experiments (Jun 2012) with
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
@@ -172,7 +172,8 @@ doChallenge(void *data)
 {
        struct challengedata *chdata = data;
        char *buf = GDKmalloc(BLOCK + 1);
-       char peer[120] = { 0 };
+       char peerbuf[120] = { '[', 0 };
+       char *peer;
        char challenge[13];
 
        stream *fdin = chdata->in;
@@ -182,11 +183,30 @@ doChallenge(void *data)
        protocol_version protocol = PROTOCOL_9;
        size_t buflen = BLOCK;
 
-       if (chdata->peer.ss_family != AF_UNSPEC) {
-               getnameinfo(
+       if (chdata->peer.ss_family == AF_UNSPEC) {
+               peer = NULL;
+#ifdef AF_UNIX
+       } else if (chdata->peer.ss_family == AF_UNIX) {
+               peer = "<UNIX SOCKET>";
+#endif
+       } else {
+               char *peer_end = peerbuf + sizeof(peerbuf);
+               char *p = &peerbuf[1];
+               char service[20];
+               if (0 == getnameinfo(
                                (struct sockaddr*)&chdata->peer, 
chdata->peerlen,
-                               peer, sizeof(peer), NULL, 0,
-                               NI_NUMERICSERV | NI_NUMERICHOST);
+                               p, peer_end - p - 10,
+                               service, sizeof(service),
+                               NI_NUMERICSERV | NI_NUMERICHOST)
+               ) {
+                       p += strlen(p);
+                       *p++ = ']';
+                       *p++ = ':';
+                       strncpy(p, service, peer_end - p);
+                       peer = peerbuf;
+               } else {
+                       peer = NULL;
+               }
        }
 
        MT_thread_setworking("challenging client");
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to