From 069b28a2ef54072a221fe4ac67aaeb4e83fee6c1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 20 Feb 2013 11:18:59 +0200 Subject: [PATCH] lib-http: Minor API change: Added http_client_request_finish_payload() --- src/lib-http/http-client-request.c | 22 ++++++++++++++++++---- src/lib-http/http-client.h | 4 +++- src/plugins/fts-solr/solr-connection.c | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/lib-http/http-client-request.c b/src/lib-http/http-client-request.c index 8be0acc9df..fa9446bdd9 100644 --- a/src/lib-http/http-client-request.c +++ b/src/lib-http/http-client-request.c @@ -176,7 +176,7 @@ void http_client_request_submit(struct http_client_request *req) } static void -http_client_request_finish_payload(struct http_client_request *req) +http_client_request_finish_payload_out(struct http_client_request *req) { if (req->payload_output != NULL) { o_stream_unref(&req->payload_output); @@ -187,7 +187,8 @@ http_client_request_finish_payload(struct http_client_request *req) http_client_request_debug(req, "Sent all payload"); } -int http_client_request_send_payload(struct http_client_request **_req, +static int +http_client_request_continue_payload(struct http_client_request **_req, const unsigned char *data, size_t size) { struct ioloop *prev_ioloop = current_ioloop; @@ -208,7 +209,7 @@ int http_client_request_send_payload(struct http_client_request **_req, if (data == NULL) { req->payload_input = NULL; if (req->state == HTTP_REQUEST_STATE_PAYLOAD_OUT) - http_client_request_finish_payload(req); + http_client_request_finish_payload_out(req); } else { req->payload_input = i_stream_create_from_data(data, size); } @@ -255,6 +256,19 @@ int http_client_request_send_payload(struct http_client_request **_req, return ret; } +int http_client_request_send_payload(struct http_client_request **_req, + const unsigned char *data, size_t size) +{ + i_assert(data != NULL); + + return http_client_request_continue_payload(_req, data, size); +} + +int http_client_request_finish_payload(struct http_client_request **_req) +{ + return http_client_request_continue_payload(_req, NULL, 0); +} + int http_client_request_send_more(struct http_client_request *req) { struct http_client_connection *conn = req->conn; @@ -279,7 +293,7 @@ int http_client_request_send_more(struct http_client_request *req) if (req->client->ioloop != NULL) io_loop_stop(req->client->ioloop); } else { - http_client_request_finish_payload(req); + http_client_request_finish_payload_out(req); } } else { diff --git a/src/lib-http/http-client.h b/src/lib-http/http-client.h index 947fa06a32..3ccb053c21 100644 --- a/src/lib-http/http-client.h +++ b/src/lib-http/http-client.h @@ -84,9 +84,11 @@ void http_client_request_set_destroy_callback(struct http_client_request *req, void *context); /* submits request and blocks until provided payload is sent. Multiple calls - are allowed; payload transmission is ended when data == NULL. */ + are allowed; payload transmission is ended with + http_client_request_finish_payload(). */ int http_client_request_send_payload(struct http_client_request **req, const unsigned char *data, size_t size); +int http_client_request_finish_payload(struct http_client_request **req); void http_client_switch_ioloop(struct http_client *client); diff --git a/src/plugins/fts-solr/solr-connection.c b/src/plugins/fts-solr/solr-connection.c index 4c836c352a..6ccbf24ac2 100644 --- a/src/plugins/fts-solr/solr-connection.c +++ b/src/plugins/fts-solr/solr-connection.c @@ -524,7 +524,7 @@ int solr_connection_post_end(struct solr_connection_post *post) i_assert(conn->posting); if (!post->failed) { - if (http_client_request_send_payload(&post->http_req, NULL, 0) <= 0 || + if (http_client_request_finish_payload(&post->http_req) <= 0 || conn->request_status < 0) { ret = -1; } -- 2.47.3