Subj : Feature request To : Michiel van der Vlist From : Andrew Kolchoogin Date : Thu May 12 2016 11:00 am 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) .