dovecot-2.2: lib-http: client: Added proper handling of 408 resp...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Aug 29 11:50:11 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/a8e01e385e90
changeset: 19033:a8e01e385e90
user: Stephan Bosch <stephan at rename-it.nl>
date: Sat Aug 29 14:20:57 2015 +0300
description:
lib-http: client: Added proper handling of 408 response status.
This is treated as a special server connection close event, rather than a
response to the last issued request.
diffstat:
src/lib-http/http-client-connection.c | 18 +++++++++++++++++-
1 files changed, 17 insertions(+), 1 deletions(-)
diffs (35 lines):
diff -r 65b88128c7eb -r a8e01e385e90 src/lib-http/http-client-connection.c
--- a/src/lib-http/http-client-connection.c Fri Aug 28 15:44:34 2015 +0200
+++ b/src/lib-http/http-client-connection.c Sat Aug 29 14:20:57 2015 +0300
@@ -657,7 +657,15 @@
if (req == NULL) {
/* server sent response without any requests in the wait list */
- http_client_connection_debug(conn, "Got unexpected input from server");
+ if (response.status == 408) {
+ http_client_connection_debug(conn,
+ "Server explicitly closed connection: 408 %s",
+ response.reason);
+ } else {
+ http_client_connection_debug(conn,
+ "Got unexpected input from server: %u %s",
+ response.status, response.reason);
+ }
http_client_connection_close(&conn);
return;
}
@@ -780,6 +788,14 @@
http_client_request_delay_from_response(req, &response) > 0 &&
http_client_request_try_retry(req))
handled = TRUE;
+ /* request timeout (by server) */
+ } else if (response.status == 408) {
+ /* automatically retry */
+ if (http_client_request_try_retry(req))
+ handled = TRUE;
+ /* connection close is implicit, although server should indicate
+ that explicitly */
+ conn->close_indicated = TRUE;
}
}
More information about the dovecot-cvs
mailing list