TIP: Click on subject to list as thread! ANSI
echo: binkd
to: MICHIEL VAN DER VLIST
from: ANDREW KOLCHOOGIN
date: 2016-05-12 10:57:00
subject: Feature request

Hello Michiel.

11 May 16 20:54, you wrote to Binkd team:

 MV> My binkd server is "multi homed". It can be reached via two different
 MV> ways.
O.k.

So, apply the following patch:

===
-+- server.c.orig   2016-05-12 10:57:44.548610913 +0300
+++ server.c    2016-05-12 10:54:42.000000000 +0300
@@ -255,9 +255,12 @@
       }
       else
       {
+        struct sockaddr server_acceptaddr;
+        socklen_t server_acceptaddr_len;
+        char local_host[BINKD_FQDNLEN + 1];
         char host[BINKD_FQDNLEN + 1];
         char service[MAXSERVNAME + 1];
-        int aiErr;
+        int laErr, aiErr;

         add_socket(new_sockfd);
         /* Was the socket created after close_sockets loop in exitfunc()? */
@@ -269,16 +272,51 @@
         }
         rel_grow_handles (6);
         ext_rand=rand();
+        laErr = getsockname(new_sockfd, &server_acceptaddr,
&server_acceptaddr_len);
         /* never resolve name in here, will be done during session */
         aiErr = getnameinfo((struct sockaddr *)&client_addr, client_addr_len,
             host, sizeof(host), service, sizeof(service),
             NI_NUMERICHOST | NI_NUMERICSERV);
-        if (aiErr == 0)
-          Log (3, "incoming from %s (%s)", host, service);
+        if (aiErr == 0)
+        {
+          if (laErr == -1)
+          {
+            Log(2, "Error in getsockname(): %s (%d)", strerror(errno), errno);
+            Log(3, "incoming from %s (%s)", host, service);
+          }
+          else
+          {
+            aiErr = getnameinfo(&server_acceptaddr, server_acceptaddr_len,
local_host, sizeof(local_host),
+                NULL, 0, NI_NUMERICHOST | NI_NUMERICSERV);
+            if (aiErr == 0)
+              Log(3, "incoming from %s (%s) to %s", host, service,
local_host);
+            else
+            {
+              Log(2, "Error in getnameinfo(): %s (%d)", gai_strerror(aiErr),
aiErr);
+              Log(3, "incoming from %s (%s)", host, service);
+            }
+          }
+        }
         else
         {
           Log(2, "Error in getnameinfo(): %s (%d)", gai_strerror(aiErr),
aiErr);
-          Log(3, "incoming from unknown");
+          if (laErr == -1)
+          {
+            Log(2, "Error in getsockname(): %s (%d)", strerror(errno), errno);
+            Log(3, "incoming from unknown");
+          }
+          else
+          {
+            aiErr = getnameinfo(&server_acceptaddr, server_acceptaddr_len,
local_host, sizeof(local_host),
+                NULL, 0, NI_NUMERICHOST | NI_NUMERICSERV);
+            if (aiErr == 0)
+              Log(3, "incoming from unknown to %s", local_host);
+            else
+            {
+              Log(2, "Error in getnameinfo(): %s (%d)", gai_strerror(aiErr),
aiErr);
+              Log(3, "incoming from unknown");
+            }
+          }
         }

         /* Creating a new process for the incoming connection */
===

It's against binkd v1.1a-94.

Andrew

... God made the people -- Colonel Colt made them equal
--- Пером по пергамент

* Origin: Восемнадцатый интернат (2:5020/290.22)

SOURCE: echomail via QWK@docsplace.org

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.