|
|
@ -605,24 +605,47 @@ static int callback_http(
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case LWS_CALLBACK_ADD_POLL_FD:
|
|
|
|
case LWS_CALLBACK_ADD_POLL_FD:
|
|
|
|
case LWS_CALLBACK_DEL_POLL_FD:
|
|
|
|
|
|
|
|
case LWS_CALLBACK_CHANGE_MODE_POLL_FD:
|
|
|
|
|
|
|
|
HASH_FIND(hh_sock, db.contexts_by_sock, &pollargs->fd, sizeof(pollargs->fd), mosq);
|
|
|
|
HASH_FIND(hh_sock, db.contexts_by_sock, &pollargs->fd, sizeof(pollargs->fd), mosq);
|
|
|
|
if(mosq){
|
|
|
|
if(mosq){
|
|
|
|
if(pollargs->events & POLLOUT){
|
|
|
|
if(pollargs->events & LWS_POLLOUT){
|
|
|
|
mux__add_out(mosq);
|
|
|
|
mux__add_out(mosq);
|
|
|
|
mosq->ws_want_write = true;
|
|
|
|
mosq->ws_want_write = true;
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
mux__remove_out(mosq);
|
|
|
|
mux__remove_out(mosq);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
if(reason == LWS_CALLBACK_ADD_POLL_FD && (pollargs->events & POLLIN)){
|
|
|
|
if(pollargs->events & POLLIN){
|
|
|
|
/* Assume this is a new listener */
|
|
|
|
/* Assume this is a new listener */
|
|
|
|
listeners__add_websockets(lws_get_context(wsi), pollargs->fd);
|
|
|
|
listeners__add_websockets(lws_get_context(wsi), pollargs->fd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case LWS_CALLBACK_DEL_POLL_FD:
|
|
|
|
|
|
|
|
HASH_FIND(hh_sock, db.contexts_by_sock, &pollargs->fd, sizeof(pollargs->fd), mosq);
|
|
|
|
|
|
|
|
if(mosq){
|
|
|
|
|
|
|
|
mux__delete(mosq);
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case LWS_CALLBACK_CHANGE_MODE_POLL_FD:
|
|
|
|
|
|
|
|
HASH_FIND(hh_sock, db.contexts_by_sock, &pollargs->fd, sizeof(pollargs->fd), mosq);
|
|
|
|
|
|
|
|
if(mosq){
|
|
|
|
|
|
|
|
if(pollargs->events & LWS_POLLHUP){
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}else if(pollargs->events & LWS_POLLOUT){
|
|
|
|
|
|
|
|
mux__add_out(mosq);
|
|
|
|
|
|
|
|
mosq->ws_want_write = true;
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
mux__remove_out(mosq);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_TLS
|
|
|
|
#ifdef WITH_TLS
|
|
|
|
case LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION:
|
|
|
|
case LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION:
|
|
|
|
if(!len || (SSL_get_verify_result((SSL*)in) != X509_V_OK)){
|
|
|
|
if(!len || (SSL_get_verify_result((SSL*)in) != X509_V_OK)){
|
|
|
|