From 4a798aa3e4e2df8cad0e1d7533b913960048bf71 Mon Sep 17 00:00:00 2001 From: Andrii Senkovych Date: Tue, 19 Nov 2019 08:28:46 +0000 Subject: [PATCH] Print HTTP port number in the logs during startup Last-Update: 2016-11-17 Current test suite allows dynamic HTTP port allocation for test purpose. Once webdis is started it is possible to discover webdis' HTTP port using netstat. However resent builds have shown that netstat has different options for hurd and kfreebsd and thus tests are failed and the overall package build is marked as failed as well. In order to overcome this I have tried to use sockstat instead of netstat but bug #679876 renders sockstat unusable. This patch removes the need to use netstat or sockstat to discover the port number webdis is listening to and instead allows one to simply grep the necessary info out of webdis logs. =================================================================== Gbp-Pq: Name print-listen-port-number.patch --- server.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/server.c b/server.c index a12126f..e02eaff 100644 --- a/server.c +++ b/server.c @@ -25,6 +25,7 @@ socket_setup(struct server *s, const char *ip, int port) { int reuse = 1; struct sockaddr_in addr; + socklen_t len = sizeof(addr); int fd, ret; memset(&addr, 0, sizeof(addr)); @@ -60,7 +61,7 @@ socket_setup(struct server *s, const char *ip, int port) { } /* bind */ - ret = bind(fd, (struct sockaddr*)&addr, sizeof(addr)); + ret = bind(fd, (struct sockaddr*)&addr, len); if (0 != ret) { slog(s, WEBDIS_ERROR, strerror(errno), 0); return -1; @@ -73,6 +74,18 @@ socket_setup(struct server *s, const char *ip, int port) { return -1; } + if (getsockname(fd, (struct sockaddr *)&addr, &len) != -1) { + const char* comment = "Webdis listening on port %d"; + int port_num = ntohs(addr.sin_port); + + char* buffer = malloc(strlen(comment) -2 + strlen("65535") + 1); + sprintf(buffer, comment, port_num); + + slog(s, WEBDIS_INFO, buffer , 0); + + free(buffer); + } + /* there you go, ready to accept! */ return fd; } -- 2.30.2