changeset 17191:790afcf05f0d

lib-http: Wrap response payload istream into a istream-timeout.
author Timo Sirainen <tss@iki.fi>
date Thu, 03 Apr 2014 19:56:47 +0300
parents e0a3b902cd3f
children a1c153c70bb9
files src/lib-http/http-client-connection.c src/plugins/fts-solr/solr-connection.c
diffstat 2 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c	Thu Apr 03 19:54:27 2014 +0300
+++ b/src/lib-http/http-client-connection.c	Thu Apr 03 19:56:47 2014 +0300
@@ -8,6 +8,7 @@
 #include "array.h"
 #include "ioloop.h"
 #include "istream.h"
+#include "istream-timeout.h"
 #include "ostream.h"
 #include "time-util.h"
 #include "iostream-rawlog.h"
@@ -433,7 +434,8 @@
 		/* wrap the stream to capture the destroy event without destroying the
 		   actual payload stream. */
 		conn->incoming_payload = response->payload =
-			i_stream_create_limit(response->payload, (uoff_t)-1);
+			i_stream_create_timeout(response->payload,
+				conn->client->set.request_timeout_msecs);
 		i_stream_add_destroy_callback(response->payload,
 					      http_client_payload_destroyed,
 					      req);
@@ -1195,5 +1197,7 @@
 		conn->to_idle = io_loop_move_timeout(&conn->to_idle);
 	if (conn->to_response != NULL)
 		conn->to_response = io_loop_move_timeout(&conn->to_response);
+	if (conn->incoming_payload != NULL)
+		i_stream_switch_ioloop(conn->incoming_payload);
 	connection_switch_ioloop(&conn->conn);
 }
--- a/src/plugins/fts-solr/solr-connection.c	Thu Apr 03 19:54:27 2014 +0300
+++ b/src/plugins/fts-solr/solr-connection.c	Thu Apr 03 19:56:47 2014 +0300
@@ -391,8 +391,8 @@
 
 	i_stream_ref(response->payload);
 	conn->payload = response->payload;
-	conn->io = io_add(i_stream_get_fd(response->payload), IO_READ,
-			  solr_connection_payload_input, conn);
+	conn->io = io_add_istream(response->payload,
+				  solr_connection_payload_input, conn);
 	solr_connection_payload_input(conn);
 }