return ((unsigned long long)tv.tv_sec * 1000000LL) + tv.tv_usec;
}
-LWS_VISIBLE int lws_get_random(struct lws_context *context,
- void *buf, int len)
+LWS_VISIBLE int
+lws_get_random(struct lws_context *context, void *buf, int len)
{
return read(context->fd_random, (char *)buf, len);
}
-LWS_VISIBLE int lws_send_pipe_choked(struct lws *wsi)
+LWS_VISIBLE int
+lws_send_pipe_choked(struct lws *wsi)
{
struct lws_pollfd fds;
/* treat the fact we got a truncated send pending as if we're choked */
- if (wsi->truncated_send_len)
+ if (wsi->trunc_len)
return 1;
fds.fd = wsi->sock;
lws_libev_run(context);
- context->service_tid = context->protocols[0].callback(NULL,
- LWS_CALLBACK_GET_THREAD_ID, NULL, NULL, 0);
+ if (!context->service_tid_detected) {
+ struct lws _lws;
+
+ memset(&_lws, 0, sizeof(_lws));
+ _lws.context = context;
+
+ context->service_tid_detected = context->protocols[0].callback(
+ &_lws, LWS_CALLBACK_GET_THREAD_ID, NULL, NULL, 0);
+ }
+ context->service_tid = context->service_tid_detected;
#ifdef LWS_OPENSSL_SUPPORT
/* if we know we have non-network pending data, do not wait in poll */
wsi = context->pending_read_list;
while (wsi) {
wsi_next = wsi->pending_read_list_next;
- context->fds[wsi->position_in_fds_table].revents |=
- context->fds[wsi->position_in_fds_table].events & POLLIN;
- if (context->fds[wsi->position_in_fds_table].revents & POLLIN) {
+ context->fds[wsi->position_in_fds_table].revents |=
+ context->fds[wsi->position_in_fds_table].events & POLLIN;
+ if (context->fds[wsi->position_in_fds_table].revents & POLLIN)
/*
* he's going to get serviced now, take him off the
* list of guys with buffered SSL. If he still has some
* list then.
*/
lws_ssl_remove_wsi_from_buffered_list(wsi);
- }
+
wsi = wsi_next;
}
#endif
/* any socket with events to service? */
for (n = 0; n < context->fds_count; n++) {
-
if (!context->fds[n].revents)
continue;
/* enable keepalive on this socket */
optval = 1;
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE,
- (const void *)&optval, optlen) < 0)
+ (const void *)&optval, optlen) < 0)
return 1;
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
/* set the keepalive conditions we want on it too */
optval = context->ka_time;
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE,
- (const void *)&optval, optlen) < 0)
+ (const void *)&optval, optlen) < 0)
return 1;
optval = context->ka_interval;
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL,
- (const void *)&optval, optlen) < 0)
+ (const void *)&optval, optlen) < 0)
return 1;
optval = context->ka_probes;
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT,
- (const void *)&optval, optlen) < 0)
+ (const void *)&optval, optlen) < 0)
return 1;
#endif
}
{
}
-
LWS_VISIBLE int
lws_plat_context_early_init(void)
{
{
/* if our parent went down, don't linger around */
if (context->started_with_parent &&
- kill(context->started_with_parent, 0) < 0)
+ kill(context->started_with_parent, 0) < 0)
kill(getpid(), SIGTERM);
}
return 1;
}
- if (lws_libev_init_fd_table(context))
- /* libev handled it instead */
- return 0;
+ if (!lws_libev_init_fd_table(context)) {
+ /* otherwise libev handled it instead */
- if (pipe(context->dummy_pipe_fds)) {
- lwsl_err("Unable to create pipe\n");
- return 1;
+ if (pipe(context->dummy_pipe_fds)) {
+ lwsl_err("Unable to create pipe\n");
+ return 1;
+ }
}
/* use the read end of pipe as first item */