diff options
Diffstat (limited to 'apps/netutils/uiplib/uip_server.c')
-rw-r--r-- | apps/netutils/uiplib/uip_server.c | 46 |
1 files changed, 6 insertions, 40 deletions
diff --git a/apps/netutils/uiplib/uip_server.c b/apps/netutils/uiplib/uip_server.c index bb8efe5e6..d7d1d2c2a 100644 --- a/apps/netutils/uiplib/uip_server.c +++ b/apps/netutils/uiplib/uip_server.c @@ -41,12 +41,14 @@ #include <sys/types.h> #include <sys/socket.h> + #include <stdint.h> #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <errno.h> #include <debug.h> + #include <netinet/in.h> #include <apps/netutils/uiplib.h> @@ -87,53 +89,17 @@ void uip_server(uint16_t portno, pthread_startroutine_t handler, int stacksize) socklen_t addrlen; int listensd; int acceptsd; -#ifdef CONFIG_NET_HAVE_REUSEADDR - int optval; -#endif /* Create a new TCP socket to use to listen for connections */ - listensd = socket(PF_INET, SOCK_STREAM, 0); + listensd = uip_listenon(portno); if (listensd < 0) { - ndbg("socket failure: %d\n", errno); return; } - /* Set socket to reuse address */ - -#ifdef CONFIG_NET_HAVE_REUSEADDR - optval = 1; - if (setsockopt(listensd, SOL_SOCKET, SO_REUSEADDR, (void*)&optval, sizeof(int)) < 0) - { - ndbg("setsockopt SO_REUSEADDR failure: %d\n", errno); - goto errout_with_socket; - } -#endif - - /* Bind the socket to a local address */ - - myaddr.sin_family = AF_INET; - myaddr.sin_port = portno; - myaddr.sin_addr.s_addr = INADDR_ANY; - - if (bind(listensd, (struct sockaddr*)&myaddr, sizeof(struct sockaddr_in)) < 0) - { - ndbg("bind failure: %d\n", errno); - goto errout_with_socket; - } - - /* Listen for connections on the bound TCP socket */ - - if (listen(listensd, 5) < 0) - { - ndbg("listen failure %d\n", errno); - goto errout_with_socket; - } - - /* Begin accepting connections */ + /* Begin serving connections */ - nvdbg("Accepting connections on port %d\n", ntohs(portno)); for (;;) { addrlen = sizeof(struct sockaddr_in); @@ -143,6 +109,7 @@ void uip_server(uint16_t portno, pthread_startroutine_t handler, int stacksize) ndbg("accept failure: %d\n", errno); break;; } + nvdbg("Connection accepted -- spawning sd=%d\n", acceptsd); /* Configure to "linger" until all data is sent when the socket is closed */ @@ -154,7 +121,7 @@ void uip_server(uint16_t portno, pthread_startroutine_t handler, int stacksize) { close(acceptsd); ndbg("setsockopt SO_LINGER failure: %d\n", errno); - break;; + break; } #endif @@ -179,6 +146,5 @@ void uip_server(uint16_t portno, pthread_startroutine_t handler, int stacksize) (void)pthread_detach(child); } -errout_with_socket: close(listensd); } |