]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: Allow caller to find out what state a request is in.
authorTimo Sirainen <tss@iki.fi>
Sun, 10 Mar 2013 15:17:47 +0000 (17:17 +0200)
committerTimo Sirainen <tss@iki.fi>
Sun, 10 Mar 2013 15:17:47 +0000 (17:17 +0200)
src/lib-http/http-client-private.h
src/lib-http/http-client-request.c
src/lib-http/http-client.h

index ea82ffcdb13f284691a4301d756fb1cceaa14a68..bf1bc4ed307e9b8c16db32c919cc23e81d1d8b61 100644 (file)
@@ -30,17 +30,6 @@ HASH_TABLE_DEFINE_TYPE(http_client_host, const char *,
 HASH_TABLE_DEFINE_TYPE(http_client_peer, const struct http_client_peer_addr *,
        struct http_client_peer *);
 
-enum http_request_state {
-       HTTP_REQUEST_STATE_NEW = 0,
-       HTTP_REQUEST_STATE_QUEUED,
-       HTTP_REQUEST_STATE_PAYLOAD_OUT,
-       HTTP_REQUEST_STATE_WAITING,
-       HTTP_REQUEST_STATE_GOT_RESPONSE,
-       HTTP_REQUEST_STATE_PAYLOAD_IN,
-       HTTP_REQUEST_STATE_FINISHED,
-       HTTP_REQUEST_STATE_ABORTED
-};
-
 struct http_client_request {
        pool_t pool;
        unsigned int refcount;
index 1832368a2f13d3c370b61e6a6b7db550ddc2cd51..452599203640c09696bb7a1ec740fe4bc30a3aa3 100644 (file)
 
 #include "http-client-private.h"
 
+const char *http_request_state_names[] = {
+       "new",
+       "queued",
+       "payload_out",
+       "waiting",
+       "got_response",
+       "payload_in",
+       "finished",
+       "aborted"
+};
+
 /*
  * Logging
  */
@@ -158,6 +169,12 @@ void http_client_request_set_payload(struct http_client_request *req,
                req->payload_sync = TRUE;
 }
 
+enum http_request_state
+http_client_request_get_state(struct http_client_request *req)
+{
+       return req->state;
+}
+
 static void http_client_request_do_submit(struct http_client_request *req)
 {
        struct http_client_host *host;
index 3ccb053c21ced1e1ae97efccb97fb21a44212600..a83f47b1a4d81aa5ae1bf26e2e71fd622e707a58 100644 (file)
@@ -18,6 +18,18 @@ enum http_client_request_error {
        HTTP_CLIENT_REQUEST_ERROR_TIMED_OUT,
 };
 
+enum http_request_state {
+       HTTP_REQUEST_STATE_NEW = 0,
+       HTTP_REQUEST_STATE_QUEUED,
+       HTTP_REQUEST_STATE_PAYLOAD_OUT,
+       HTTP_REQUEST_STATE_WAITING,
+       HTTP_REQUEST_STATE_GOT_RESPONSE,
+       HTTP_REQUEST_STATE_PAYLOAD_IN,
+       HTTP_REQUEST_STATE_FINISHED,
+       HTTP_REQUEST_STATE_ABORTED
+};
+extern const char *http_request_state_names[];
+
 struct http_client_settings {
        const char *dns_client_socket_path;
 
@@ -75,6 +87,8 @@ void http_client_request_add_header(struct http_client_request *req,
 void http_client_request_set_payload(struct http_client_request *req,
                                     struct istream *input, bool sync);
 
+enum http_request_state
+http_client_request_get_state(struct http_client_request *req);
 void http_client_request_submit(struct http_client_request *req);
 void http_client_request_abort(struct http_client_request **req);