@@ -94,6 +94,7 @@ lws_accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents)
94
94
struct lws_context_per_thread * pt ;
95
95
struct lws_pollfd eventfd ;
96
96
struct lws * wsi ;
97
+ int tsi = 0 ;
97
98
98
99
if (revents & EV_ERROR )
99
100
return ;
@@ -112,10 +113,12 @@ lws_accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents)
112
113
}
113
114
114
115
wsi = wsi_from_fd (context , watcher -> fd );
115
- pt = & context -> pt [(int )wsi -> tsi ];
116
+ if (wsi )
117
+ tsi = (int )wsi -> tsi ;
118
+ pt = & context -> pt [tsi ];
116
119
ptpr = pt_to_priv_ev (pt );
117
120
118
- lws_service_fd_tsi (context , & eventfd , ( int ) wsi -> tsi );
121
+ lws_service_fd_tsi (context , & eventfd , tsi );
119
122
120
123
ev_idle_start (ptpr -> io_loop , & ptpr -> idle );
121
124
}
@@ -413,14 +416,22 @@ elops_destroy_wsi_ev(struct lws *wsi)
413
416
ev_io_stop (ptpr -> io_loop , & w -> w_write .watcher );
414
417
}
415
418
419
+ static int
420
+ elops_wsi_logical_close_ev (struct lws * wsi )
421
+ {
422
+ elops_destroy_wsi_ev (wsi );
423
+
424
+ return 0 ;
425
+ }
426
+
416
427
static const struct lws_event_loop_ops event_loop_ops_ev = {
417
428
/* name */ "libev" ,
418
429
/* init_context */ elops_init_context_ev ,
419
430
/* destroy_context1 */ NULL ,
420
431
/* destroy_context2 */ elops_destroy_context2_ev ,
421
432
/* init_vhost_listen_wsi */ elops_init_vhost_listen_wsi_ev ,
422
433
/* init_pt */ elops_init_pt_ev ,
423
- /* wsi_logical_close */ NULL ,
434
+ /* wsi_logical_close */ elops_wsi_logical_close_ev ,
424
435
/* check_client_connect_ok */ NULL ,
425
436
/* close_handle_manually */ NULL ,
426
437
/* accept */ elops_accept_ev ,
0 commit comments