Commit Diff


commit - ab55c7815e8e749e775d95c26f0e217744949285
commit + 37df23d183de23b74f8a026977b8210dc22701a6
blob - 0f4694d8ec30754c30d85231eaff7c0d12fe2cb8
blob + f45d9b2ce431ea1f1af8f847a89e3f8d7bfb9a05
--- ge.c
+++ ge.c
@@ -44,11 +44,9 @@ log_request(struct client *c, char *meta, size_t l)
 {
 	char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV], b[GEMINI_URL_LEN];
 	const char *t;
-	size_t len;
 	int ec;
 
-	len = sizeof(c->addr);
-	ec = getnameinfo((struct sockaddr*)&c->addr, len,
+	ec = getnameinfo((struct sockaddr*)&c->raddr, c->raddrlen,
 	    hbuf, sizeof(hbuf),
 	    sbuf, sizeof(sbuf),
 	    NI_NUMERICHOST | NI_NUMERICSERV);
blob - 22d82b9e19bbe84b979bd5b6c6039b00d23c9158
blob + d3e4cb2d0d3f0d855fa6f743a4e11b55ac7a9ea3
--- gmid.c
+++ gmid.c
@@ -87,11 +87,9 @@ log_request(struct client *c, char *meta, size_t l)
 	char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV], b[GEMINI_URL_LEN];
 	char *fmted;
 	const char *t;
-	size_t len;
 	int ec;
 
-	len = sizeof(c->addr);
-	ec = getnameinfo((struct sockaddr*)&c->addr, len,
+	ec = getnameinfo((struct sockaddr*)&c->raddr, c->raddrlen,
 	    hbuf, sizeof(hbuf),
 	    sbuf, sizeof(sbuf),
 	    NI_NUMERICHOST | NI_NUMERICSERV);
blob - 9a4f1f1d1698ad8b4c6f8798101bc94f60338f63
blob + 644788bcdf6c52441e6cb6ed9a768ff3187332b1
--- gmid.h
+++ gmid.h
@@ -289,7 +289,9 @@ struct client {
 	char		 sbuf[1029];
 	ssize_t		 len, off;
 
-	struct sockaddr_storage	 addr;
+	struct sockaddr_storage	 raddr;
+	socklen_t		 raddrlen;
+
 	struct vhost	*host;	/* host they're talking to */
 	size_t		 loc;	/* location matched */
 
blob - acf77034dc98e86c92242eed876d37aa6b8b10d3
blob + 05c1d4bf94ed0e278f6b0013480346ad54dd4094
--- server.c
+++ server.c
@@ -1315,14 +1315,14 @@ do_accept(int sock, short et, void *d)
 {
 	struct conf *conf = d;
 	struct client *c;
-	struct sockaddr_storage addr;
-	struct sockaddr *saddr;
+	struct sockaddr_storage raddr;
+	struct sockaddr *sraddr;
 	socklen_t len;
 	int fd;
 
-	saddr = (struct sockaddr*)&addr;
-	len = sizeof(addr);
-	if ((fd = accept(sock, saddr, &len)) == -1) {
+	sraddr = (struct sockaddr *)&raddr;
+	len = sizeof(raddr);
+	if ((fd = accept(sock, sraddr, &len)) == -1) {
 		if (errno == EWOULDBLOCK || errno == EAGAIN ||
 		    errno == ECONNABORTED)
 			return;
@@ -1336,7 +1336,8 @@ do_accept(int sock, short et, void *d)
 	c->id = ++server_client_id;
 	c->fd = fd;
 	c->pfd = -1;
-	c->addr = addr;
+	memcpy(&c->raddr, &raddr, sizeof(raddr));
+	c->raddrlen = len;
 
 	if (tls_accept_socket(ctx, &c->ctx, fd) == -1) {
 		log_warnx("failed to accept socket: %s", tls_error(c->ctx));