diff --git a/nsock/src/nsock_core.c b/nsock/src/nsock_core.c index c8910e094..3c37d6a78 100644 --- a/nsock/src/nsock_core.c +++ b/nsock/src/nsock_core.c @@ -939,7 +939,7 @@ void process_event(mspool *nsp, gh_list *evlist, msevent *nse, int ev) { case NSE_TYPE_CONNECT_SSL: if (ev != EV_NONE) handle_connect_result(nsp, nse, NSE_STATUS_SUCCESS); - if (!nse->event_done && nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)) + if (msevent_timedout(nse)) handle_connect_result(nsp, nse, NSE_STATUS_TIMEOUT); break; @@ -956,7 +956,7 @@ void process_event(mspool *nsp, gh_list *evlist, msevent *nse, int ev) { if (!nse->iod->ssl && match_r) handle_read_result(nsp, nse, NSE_STATUS_SUCCESS); - if (!nse->event_done && nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)) + if (msevent_timedout(nse)) handle_read_result(nsp, nse, NSE_STATUS_TIMEOUT); break; @@ -973,12 +973,12 @@ void process_event(mspool *nsp, gh_list *evlist, msevent *nse, int ev) { if (!nse->iod->ssl && match_w) handle_write_result(nsp, nse, NSE_STATUS_SUCCESS); - if (!nse->event_done && nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)) + if (msevent_timedout(nse)) handle_write_result(nsp, nse, NSE_STATUS_TIMEOUT); break; case NSE_TYPE_TIMER: - if (nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)) + if (msevent_timedout(nse)) handle_timer_result(nsp, nse, NSE_STATUS_SUCCESS); break; @@ -996,7 +996,7 @@ void process_event(mspool *nsp, gh_list *evlist, msevent *nse, int ev) { if (fs_length(&(nse->iobuf)) > 0) handle_pcap_read_result(nsp, nse, NSE_STATUS_SUCCESS); - if (!nse->event_done && nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)) + if (msevent_timedout(nse)) handle_pcap_read_result(nsp, nse, NSE_STATUS_TIMEOUT); #if PCAP_BSD_SELECT_HACK diff --git a/nsock/src/nsock_event.c b/nsock/src/nsock_event.c index fc1fb858c..52c30444f 100644 --- a/nsock/src/nsock_event.c +++ b/nsock/src/nsock_event.c @@ -506,3 +506,9 @@ const char *nse_status2str(enum nse_status status) { } } +int msevent_timedout(msevent *nse) { + if (nse->event_done) + return 0; + + return (nse->timeout.tv_sec && !TIMEVAL_AFTER(nse->timeout, nsock_tod)); +} diff --git a/nsock/src/nsock_internal.h b/nsock/src/nsock_internal.h index f4a8c4c8a..527f3355f 100644 --- a/nsock/src/nsock_internal.h +++ b/nsock/src/nsock_internal.h @@ -419,6 +419,8 @@ static inline int nsock_engine_loop(mspool *nsp, int msec_timeout) { /* ------------------- PROTOTYPES ------------------- */ +int msevent_timedout(msevent *nse); + /* Get a new nsock_event_id, given a type */ nsock_event_id get_new_event_id(mspool *nsp, enum nse_type type);