Remove unnecessary extra tracking of eloop registration
It is fine to try to cancel a registration that does not exist, so there is no need to have the duplicated checks for eloop timeout and socket registration. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
c86bf160a7
commit
c89d9dba9c
1 changed files with 9 additions and 24 deletions
|
@ -67,8 +67,6 @@ struct httpread {
|
||||||
int timeout_seconds; /* 0 or total duration timeout period */
|
int timeout_seconds; /* 0 or total duration timeout period */
|
||||||
|
|
||||||
/* dynamically used information follows */
|
/* dynamically used information follows */
|
||||||
int sd_registered; /* nonzero if we need to unregister socket */
|
|
||||||
int to_registered; /* nonzero if we need to unregister timeout */
|
|
||||||
|
|
||||||
int got_hdr; /* nonzero when header is finalized */
|
int got_hdr; /* nonzero when header is finalized */
|
||||||
char hdr[HTTPREAD_HEADER_MAX_SIZE+1]; /* headers stored here */
|
char hdr[HTTPREAD_HEADER_MAX_SIZE+1]; /* headers stored here */
|
||||||
|
@ -143,12 +141,8 @@ void httpread_destroy(struct httpread *h)
|
||||||
if (!h)
|
if (!h)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (h->to_registered)
|
|
||||||
eloop_cancel_timeout(httpread_timeout_handler, NULL, h);
|
eloop_cancel_timeout(httpread_timeout_handler, NULL, h);
|
||||||
h->to_registered = 0;
|
|
||||||
if (h->sd_registered)
|
|
||||||
eloop_unregister_sock(h->sd, EVENT_TYPE_READ);
|
eloop_unregister_sock(h->sd, EVENT_TYPE_READ);
|
||||||
h->sd_registered = 0;
|
|
||||||
os_free(h->body);
|
os_free(h->body);
|
||||||
os_free(h->uri);
|
os_free(h->uri);
|
||||||
os_memset(h, 0, sizeof(*h)); /* aid debugging */
|
os_memset(h, 0, sizeof(*h)); /* aid debugging */
|
||||||
|
@ -163,7 +157,6 @@ static void httpread_timeout_handler(void *eloop_data, void *user_ctx)
|
||||||
{
|
{
|
||||||
struct httpread *h = user_ctx;
|
struct httpread *h = user_ctx;
|
||||||
wpa_printf(MSG_DEBUG, "httpread timeout (%p)", h);
|
wpa_printf(MSG_DEBUG, "httpread timeout (%p)", h);
|
||||||
h->to_registered = 0; /* is self-cancelling */
|
|
||||||
(*h->cb)(h, h->cookie, HTTPREAD_EVENT_TIMEOUT);
|
(*h->cb)(h, h->cookie, HTTPREAD_EVENT_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,15 +682,11 @@ got_file:
|
||||||
* and just in case somehow we don't get destroyed right away,
|
* and just in case somehow we don't get destroyed right away,
|
||||||
* unregister now.
|
* unregister now.
|
||||||
*/
|
*/
|
||||||
if (h->sd_registered)
|
|
||||||
eloop_unregister_sock(h->sd, EVENT_TYPE_READ);
|
eloop_unregister_sock(h->sd, EVENT_TYPE_READ);
|
||||||
h->sd_registered = 0;
|
|
||||||
/* The application can destroy us whenever they feel like...
|
/* The application can destroy us whenever they feel like...
|
||||||
* cancel timeout.
|
* cancel timeout.
|
||||||
*/
|
*/
|
||||||
if (h->to_registered)
|
|
||||||
eloop_cancel_timeout(httpread_timeout_handler, NULL, h);
|
eloop_cancel_timeout(httpread_timeout_handler, NULL, h);
|
||||||
h->to_registered = 0;
|
|
||||||
(*h->cb)(h, h->cookie, HTTPREAD_EVENT_FILE_READY);
|
(*h->cb)(h, h->cookie, HTTPREAD_EVENT_FILE_READY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,21 +724,17 @@ struct httpread * httpread_create(
|
||||||
h->max_bytes = max_bytes;
|
h->max_bytes = max_bytes;
|
||||||
h->timeout_seconds = timeout_seconds;
|
h->timeout_seconds = timeout_seconds;
|
||||||
|
|
||||||
if (timeout_seconds > 0) {
|
if (timeout_seconds > 0 &&
|
||||||
if (eloop_register_timeout(timeout_seconds, 0,
|
eloop_register_timeout(timeout_seconds, 0,
|
||||||
httpread_timeout_handler,
|
httpread_timeout_handler, NULL, h)) {
|
||||||
NULL, h)) {
|
|
||||||
/* No way to recover (from malloc failure) */
|
/* No way to recover (from malloc failure) */
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
h->to_registered = 1;
|
|
||||||
}
|
|
||||||
if (eloop_register_sock(sd, EVENT_TYPE_READ, httpread_read_handler,
|
if (eloop_register_sock(sd, EVENT_TYPE_READ, httpread_read_handler,
|
||||||
NULL, h)) {
|
NULL, h)) {
|
||||||
/* No way to recover (from malloc failure) */
|
/* No way to recover (from malloc failure) */
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
h->sd_registered = 1;
|
|
||||||
return h;
|
return h;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
Loading…
Reference in a new issue