@@ -36,13 +36,14 @@ HTTPReq http_req[MAX_HTTP_CLIENT];
3636uint8_t req_buf [MAX_HTTP_CLIENT ][MAX_HEADER_SIZE + MAX_BODY_SIZE ];
3737uint8_t res_buf [MAX_HTTP_CLIENT ][MAX_HEADER_SIZE + MAX_BODY_SIZE ];
3838
39- void HTTPServerInit (HTTPServer * srv , uint16_t port ) {
39+ int HTTPServerInit (HTTPServer * srv , uint16_t port ) {
4040 struct sockaddr_in srv_addr ;
4141 unsigned int i ;
4242
4343 /* Have a server socket. */
4444 srv -> sock = socket (AF_INET , SOCK_STREAM , 0 );
45- if (srv -> sock <= 0 ) exit (1 );
45+ if (srv -> sock < 0 )
46+ return -1 ;
4647 /* Set server address. */
4748 memset (& srv_addr , 0 , sizeof (srv_addr ));
4849 srv_addr .sin_family = AF_INET ;
@@ -52,7 +53,8 @@ void HTTPServerInit(HTTPServer *srv, uint16_t port) {
5253 setsockopt (srv -> sock , SOL_SOCKET , SO_REUSEADDR , & (int ){1 }, sizeof (int ));
5354 /* Bind the server socket with the server address. */
5455 if (bind (srv -> sock , (struct sockaddr * ) & srv_addr , sizeof (srv_addr )) == -1 ) {
55- exit (1 );
56+ HTTPServerClose (srv );
57+ return -1 ;
5658 }
5759 /* Set the server socket non-blocking. */
5860 fcntl (srv -> sock , F_SETFL , O_NONBLOCK );
@@ -75,6 +77,7 @@ void HTTPServerInit(HTTPServer *srv, uint16_t port) {
7577 http_req [i ].clisock = -1 ;
7678 http_req [i ].work_state = NOTWORK_SOCKET ;
7779 }
80+ return 0 ;
7881}
7982
8083void _HTTPServerAccept (HTTPServer * srv ) {
@@ -385,6 +388,9 @@ void HTTPServerRun(HTTPServer *srv, HTTPREQ_CALLBACK callback) {
385388 struct timeval timeout = {0 , 0 };
386389 uint16_t i ;
387390
391+ if (srv -> sock < 0 )
392+ return ;
393+
388394 /* Copy master socket queue to readable, writeable socket queue. */
389395 readable = srv -> _read_sock_pool ;
390396 writeable = srv -> _write_sock_pool ;
@@ -426,8 +432,11 @@ void HTTPServerRun(HTTPServer *srv, HTTPREQ_CALLBACK callback) {
426432}
427433
428434void HTTPServerClose (HTTPServer * srv ) {
435+ if (srv -> sock < 0 )
436+ return ;
429437 shutdown (srv -> sock , SHUT_RDWR );
430438 close ((srv )-> sock );
439+ srv -> sock = -1 ;
431440}
432441
433442#ifdef MICRO_HTTP_SERVER_EXAMPLE
0 commit comments