summaryrefslogtreecommitdiff
path: root/apps/netutils/uiplib/uip_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/netutils/uiplib/uip_server.c')
-rw-r--r--apps/netutils/uiplib/uip_server.c46
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);
}