git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCHv2 1/2] daemon: add helper function named_sock_setup

From
Alexander Sulfrian <alexander@sulfrian.net>
Date
Aug 29, 2010, 15:07 UTC
Message-ID
<1283094462-5184-2-git-send-email-alexander@sulfrian.net>
In-Reply-To
<7v4oel14tl.fsf@alter.siamese.dyndns.org>

Add named_sock_setup as helper function for socksetup to make it easier to create more than one listen sockets. named_sock_setup could be called more than one time and add the new sockets to the supplied socklist_p.

Signed-off-by: Alexander Sulfrian <alexander@sulfrian.net>
---
 daemon.c |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/daemon.c b/daemon.c
index e22a2b7..deda4cf 100644
--- a/daemon.c
+++ b/daemon.c
@@ -736,9 +736,9 @@ static int set_reuse_addr(int sockfd)
 
 #ifndef NO_IPV6
 
-static int socksetup(char *listen_addr, int listen_port, int **socklist_p)
+static int setup_named_sock(char *listen_addr, int listen_port, int **socklist_p, int socknum)
 {
-	int socknum = 0, *socklist = NULL;
+	int *socklist = *socklist_p;
 	int maxfd = -1;
 	char pbuf[NI_MAXSERV];
 	struct addrinfo hints, *ai0, *ai;
@@ -810,8 +810,9 @@ static int socksetup(char *listen_addr, int listen_port, int **socklist_p)
 
 #else /* NO_IPV6 */
 
-static int socksetup(char *listen_addr, int listen_port, int **socklist_p)
+static int setup_named_sock(char *listen_addr, int listen_port, int **socklist_p, int socknum)
 {
+	int *socklist = *socklist_p;
 	struct sockaddr_in sin;
 	int sockfd;
 	long flags;
@@ -823,41 +824,53 @@ static int socksetup(char *listen_addr, int listen_port, int **socklist_p)
 	if (listen_addr) {
 		/* Well, host better be an IP address here. */
 		if (inet_pton(AF_INET, listen_addr, &sin.sin_addr.s_addr) <= 0)
-			return 0;
+			return socknum;
 	} else {
 		sin.sin_addr.s_addr = htonl(INADDR_ANY);
 	}
 
 	sockfd = socket(AF_INET, SOCK_STREAM, 0);
 	if (sockfd < 0)
-		return 0;
+		return socknum;
 
 	if (set_reuse_addr(sockfd)) {
 		close(sockfd);
-		return 0;
+		return socknum;
 	}
 
 	if ( bind(sockfd, (struct sockaddr *)&sin, sizeof sin) < 0 ) {
 		close(sockfd);
-		return 0;
+		return socknum;
 	}
 
 	if (listen(sockfd, 5) < 0) {
 		close(sockfd);
-		return 0;
+		return socknum;
 	}
 
 	flags = fcntl(sockfd, F_GETFD, 0);
 	if (flags >= 0)
 		fcntl(sockfd, F_SETFD, flags | FD_CLOEXEC);
 
-	*socklist_p = xmalloc(sizeof(int));
-	**socklist_p = sockfd;
-	return 1;
+	socklist = xrealloc(socklist, sizeof(int) * (socknum + 1));
+	socklist[socknum++] = sockfd;
+
+	*socklist_p = socklist;
+	return socknum;
 }
 
 #endif
 
+static int socksetup(char *listen_addr, int listen_port, int **socklist_p)
+{
+	int socknum = 0, *socklist = NULL;
+
+	socknum = setup_named_sock(listen_addr, listen_port, &socklist, socknum);
+
+	*socklist_p = socklist;
+	return socknum;
+}
+
 static int service_loop(int socknum, int *socklist)
 {
 	struct pollfd *pfd;
-- 
1.7.1
Previous: Alexander SulfrianNext: Alexander Sulfrian
Message 15 of 18 in “added possibility to supply more than one --listen argument to git-daemon”
  1. Alexander SulfrianAug 23, 2010
  2. added possibility to supply more than one --listen argument to git-daemonAlexander Sulfrian, Aug 23, 2010
  3. Junio C HamanoAug 23, 2010
  4. daemon: allow more than one host addresses given via --listenAlexander Sulfrian, Aug 29, 2010
  5. daemon: allow more than one host addresses given via --listenAlexander Sulfrian, Aug 29, 2010
  6. 1/2 daemon: add helper function named_sock_setupAlexander Sulfrian, Aug 29, 2010
  7. 2/2 daemon: allow more than one host address given via --listenAlexander Sulfrian, Aug 29, 2010
  8. Junio C HamanoAug 30, 2010
  9. daemon: allow more than one host address given via --listenAlexander Sulfrian, Aug 30, 2010
  10. 1/2 daemon: add helper function named_sock_setupAlexander Sulfrian, Aug 30, 2010
  11. Erik Faye-LundAug 30, 2010
  12. AlexanderSAug 30, 2010
  13. Erik Faye-LundAug 30, 2010
  14. 2/2 daemon: allow more than one host address given via --listenAlexander Sulfrian, Aug 30, 2010
  15. 1/2 daemon: add helper function named_sock_setupAlexander Sulfrian, Aug 29, 2010
  16. 2/2 daemon: allow more than one host address given via --listenAlexander Sulfrian, Aug 29, 2010
  17. Erik Faye-LundAug 29, 2010
  18. AlexanderSAug 29, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.