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)
|