- Fix #4227: pair event del and add for libevent for tcp_req_info.

git-svn-id: file:///svn/unbound/trunk@5122 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2019-02-25 15:48:27 +00:00
parent 3599fd9c60
commit 225534e5ab
3 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,6 @@
25 February 2019: Wouter
- Fix #4227: pair event del and add for libevent for tcp_req_info.
21 February 2019: Wouter 21 February 2019: Wouter
- Fix the error for unknown module in module-config is understandable, - Fix the error for unknown module in module-config is understandable,
and explains it was not compiled in and where to see the list. and explains it was not compiled in and where to see the list.

View file

@ -1636,10 +1636,12 @@ tcp_req_info_setup_listen(struct tcp_req_info* req)
if(wr) { if(wr) {
req->cp->tcp_is_reading = 0; req->cp->tcp_is_reading = 0;
comm_point_stop_listening(req->cp);
comm_point_start_listening(req->cp, -1, comm_point_start_listening(req->cp, -1,
req->cp->tcp_timeout_msec); req->cp->tcp_timeout_msec);
} else if(rd) { } else if(rd) {
req->cp->tcp_is_reading = 1; req->cp->tcp_is_reading = 1;
comm_point_stop_listening(req->cp);
comm_point_start_listening(req->cp, -1, comm_point_start_listening(req->cp, -1,
req->cp->tcp_timeout_msec); req->cp->tcp_timeout_msec);
/* and also read it (from SSL stack buffers), so /* and also read it (from SSL stack buffers), so
@ -1647,6 +1649,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req)
* the TLS frame is sitting in the buffers. */ * the TLS frame is sitting in the buffers. */
req->read_again = 1; req->read_again = 1;
} else { } else {
comm_point_stop_listening(req->cp);
comm_point_start_listening(req->cp, -1, comm_point_start_listening(req->cp, -1,
req->cp->tcp_timeout_msec); req->cp->tcp_timeout_msec);
comm_point_listen_for_rw(req->cp, 0, 0); comm_point_listen_for_rw(req->cp, 0, 0);
@ -1759,6 +1762,7 @@ tcp_req_info_handle_readdone(struct tcp_req_info* req)
* clear to write to */ * clear to write to */
send_it: send_it:
c->tcp_is_reading = 0; c->tcp_is_reading = 0;
comm_point_stop_listening(c);
comm_point_start_listening(c, -1, c->tcp_timeout_msec); comm_point_start_listening(c, -1, c->tcp_timeout_msec);
return; return;
} }

View file

@ -989,10 +989,10 @@ tcp_callback_writer(struct comm_point* c)
c->tcp_is_reading = 1; c->tcp_is_reading = 1;
c->tcp_byte_count = 0; c->tcp_byte_count = 0;
/* switch from listening(write) to listening(read) */ /* switch from listening(write) to listening(read) */
comm_point_stop_listening(c);
if(c->tcp_req_info) { if(c->tcp_req_info) {
tcp_req_info_handle_writedone(c->tcp_req_info); tcp_req_info_handle_writedone(c->tcp_req_info);
} else { } else {
comm_point_stop_listening(c);
comm_point_start_listening(c, -1, -1); comm_point_start_listening(c, -1, -1);
} }
} }
@ -1006,11 +1006,11 @@ tcp_callback_reader(struct comm_point* c)
if(c->tcp_do_toggle_rw) if(c->tcp_do_toggle_rw)
c->tcp_is_reading = 0; c->tcp_is_reading = 0;
c->tcp_byte_count = 0; c->tcp_byte_count = 0;
if(c->type == comm_tcp)
comm_point_stop_listening(c);
if(c->tcp_req_info) { if(c->tcp_req_info) {
tcp_req_info_handle_readdone(c->tcp_req_info); tcp_req_info_handle_readdone(c->tcp_req_info);
} else { } else {
if(c->type == comm_tcp)
comm_point_stop_listening(c);
fptr_ok(fptr_whitelist_comm_point(c->callback)); fptr_ok(fptr_whitelist_comm_point(c->callback));
if( (*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &c->repinfo) ) { if( (*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &c->repinfo) ) {
comm_point_start_listening(c, -1, c->tcp_timeout_msec); comm_point_start_listening(c, -1, c->tcp_timeout_msec);