projects
/
radsecproxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Stop rs_request_send() from leaking RSE_TIMEOUT_CONN and RSE_TIMEOUT_IO.
[radsecproxy.git]
/
lib
/
request.c
diff --git
a/lib/request.c
b/lib/request.c
index
3a8b6dd
..
40ac56d
100644
(file)
--- a/
lib/request.c
+++ b/
lib/request.c
@@
-119,17
+119,19
@@
rs_request_send (struct rs_request *request, struct rs_packet **resp_msg)
resp_msg);
if (r == RSE_OK)
break; /* Success. */
resp_msg);
if (r == RSE_OK)
break; /* Success. */
-
- if (r != RSE_TIMEOUT_CONN && r != RSE_TIMEOUT_IO)
- break; /* Error. */
}
}
-
else
if (r != RSE_TIMEOUT_CONN && r != RSE_TIMEOUT_IO)
+ if (r != RSE_TIMEOUT_CONN && r != RSE_TIMEOUT_IO)
break; /* Error. */
break; /* Error. */
+ /* Timing out reading or writing. Pop the timeout error from the
+ stack and continue the loop. */
+ rs_err_conn_pop (request->conn);
+
gettimeofday (&now, NULL);
if (++count > MRC || timercmp (&now, &end, >))
{
gettimeofday (&now, NULL);
if (++count > MRC || timercmp (&now, &end, >))
{
- r = RSE_TIMEOUT;
+ r = rs_err_conn_push_fl (request->conn, RSE_TIMEOUT,
+ __FILE__, __LINE__, NULL);
break; /* Timeout. */
}
break; /* Timeout. */
}