X-Git-Url: https://git.distorted.org.uk/~mdw/yaid/blobdiff_plain/ace9eb228c33bdb5ab3848154819e74ad2f2e4b0..223e3e2be7a30ab58804b9b741c9438b123a16fd:/yaid.c diff --git a/yaid.c b/yaid.c index 601aa51..a99604f 100644 --- a/yaid.c +++ b/yaid.c @@ -55,6 +55,7 @@ struct listen { struct client { int fd; /* The connection to the client */ selbuf b; /* Accumulate lines of input */ + union addr raddr; /* Remote address */ struct query q; /* The clients query and our reply */ struct sel_timer t; /* Timeout for idle or doomed conn */ struct listen *l; /* Back to the listener (and ops) */ @@ -656,6 +657,7 @@ static void client_line(char *line, size_t len, void *p) skipws(&q); if (*q) goto bad; /* Identify the connection. Act on the result. */ + c->q.s[R].addr = c->raddr; identify(&c->q); switch (c->q.resp) { @@ -822,7 +824,7 @@ static void accept_client(int fd, unsigned mode, void *p) c->q.ao = l->ao; /* Collect the local and remote addresses. */ - l->ao->sockaddr_to_addr(&ssr, &c->q.s[R].addr); + l->ao->sockaddr_to_addr(&ssr, &c->raddr); ssz = sizeof(ssl); if (getsockname(sk, (struct sockaddr *)&ssl, &ssz)) { logmsg(0, LOG_ERR,