mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
restore accept error as closure signal
Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
parent
915316644c
commit
3928f6178a
7 changed files with 27 additions and 16 deletions
|
@ -53,6 +53,9 @@
|
|||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/prctl.h> header file. */
|
||||
#undef HAVE_SYS_PRCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
|
|
2
configure
vendored
2
configure
vendored
|
@ -12438,7 +12438,7 @@ fi
|
|||
|
||||
|
||||
# Checks for header files.
|
||||
for ac_header in zlib.h fcntl.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h
|
||||
for ac_header in zlib.h fcntl.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h sys/prctl.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
|
|
|
@ -138,7 +138,8 @@ struct libwebsocket *__libwebsocket_client_connect_2(
|
|||
wsi->mode = LWS_CONNMODE_WS_CLIENT_ISSUE_HANDSHAKE;
|
||||
pfd.fd = wsi->sock;
|
||||
pfd.revents = POLLIN;
|
||||
libwebsocket_service_fd(context, &pfd);
|
||||
if (libwebsocket_service_fd(context, &pfd) < 0)
|
||||
goto oom4;
|
||||
|
||||
return wsi;
|
||||
|
||||
|
|
|
@ -1529,8 +1529,8 @@ libwebsocket_service_fd(struct libwebsocket_context *context,
|
|||
accept_fd = accept(pollfd->fd, (struct sockaddr *)&cli_addr,
|
||||
&clilen);
|
||||
if (accept_fd < 0) {
|
||||
fprintf(stderr, "ERROR on accept");
|
||||
break;
|
||||
debug("ERROR on accept\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Disable Nagle */
|
||||
|
@ -1641,8 +1641,8 @@ libwebsocket_service_fd(struct libwebsocket_context *context,
|
|||
accept_fd = accept(pollfd->fd, (struct sockaddr *)&cli_addr,
|
||||
&clilen);
|
||||
if (accept_fd < 0) {
|
||||
fprintf(stderr, "ERROR on accept");
|
||||
break;
|
||||
debug("ERROR on accept\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (context->fds_count >= MAX_CLIENTS) {
|
||||
|
@ -2174,15 +2174,16 @@ libwebsocket_service(struct libwebsocket_context *context, int timeout_ms)
|
|||
/*
|
||||
fprintf(stderr, "Listen Socket dead\n");
|
||||
*/
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* handle accept on listening socket? */
|
||||
|
||||
for (n = 0; n < context->fds_count; n++)
|
||||
if (context->fds[n].revents)
|
||||
libwebsocket_service_fd(context, &context->fds[n]);
|
||||
|
||||
if (libwebsocket_service_fd(context,
|
||||
&context->fds[n]) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3030,7 +3031,7 @@ libwebsockets_fork_service_loop(struct libwebsocket_context *context)
|
|||
|
||||
while (1) {
|
||||
if (libwebsocket_service(context, 1000))
|
||||
return -1;
|
||||
break;
|
||||
#ifndef HAVE_SYS_PRCTL_H
|
||||
/*
|
||||
* on systems without prctl() (i.e. anything but linux) we can notice that our
|
||||
|
@ -3044,7 +3045,7 @@ libwebsockets_fork_service_loop(struct libwebsocket_context *context)
|
|||
}
|
||||
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -287,6 +287,9 @@ int main(int argc, char **argv)
|
|||
while (n >= 0 && !was_closed) {
|
||||
n = libwebsocket_service(context, 1000);
|
||||
|
||||
if (n < 0)
|
||||
continue;
|
||||
|
||||
if (wsi_mirror == NULL) {
|
||||
|
||||
/* create a client websocket using mirror protocol */
|
||||
|
|
|
@ -517,8 +517,9 @@ int main(int argc, char **argv)
|
|||
* match anything under libwebsockets
|
||||
* control
|
||||
*/
|
||||
libwebsocket_service_fd(context,
|
||||
&pollfds[n]);
|
||||
if (libwebsocket_service_fd(context,
|
||||
&pollfds[n]))
|
||||
goto done;
|
||||
|
||||
/* do our broadcast periodically */
|
||||
|
||||
|
|
|
@ -463,7 +463,8 @@ int main(int argc, char **argv)
|
|||
|
||||
fprintf(stderr, " Using no-fork service loop\n");
|
||||
|
||||
while (1) {
|
||||
n = 0;
|
||||
while (n >= 0) {
|
||||
struct timeval tv;
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
|
@ -495,10 +496,11 @@ int main(int argc, char **argv)
|
|||
* "manually".
|
||||
*
|
||||
* If no socket is needing service, the call below returns
|
||||
* immediately and quickly.
|
||||
* immediately and quickly. Negative return means we are
|
||||
* in process of closing
|
||||
*/
|
||||
|
||||
libwebsocket_service(context, 50);
|
||||
n = libwebsocket_service(context, 50);
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
Loading…
Add table
Reference in a new issue