diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-01-16 11:21:02 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-01-18 01:41:26 +0100 |
commit | 6c222d0646fa7c07be96d729009916d5af295332 (patch) | |
tree | 3e9ea61840825fee44d1fd562cd08ca6b1eceb69 /uclient.h | |
parent | 71ca932167085f313711d4259393c5f3441cc3a8 (diff) | |
download | uclient-6c222d0646fa7c07be96d729009916d5af295332.tar.gz |
support for connection timeout
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Diffstat (limited to 'uclient.h')
-rw-r--r-- | uclient.h | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -24,12 +24,15 @@ #include <libubox/ustream.h> #include <libubox/ustream-ssl.h> +#define UCLIENT_DEFAULT_TIMEOUT_MS 30000 + struct uclient_cb; struct uclient_backend; enum uclient_error_code { UCLIENT_ERROR_UNKNOWN, UCLIENT_ERROR_CONNECT, + UCLIENT_ERROR_TIMEDOUT, UCLIENT_ERROR_SSL_INVALID_CERT, UCLIENT_ERROR_SSL_CN_MISMATCH, UCLIENT_ERROR_MISSING_SSL_CONTEXT, @@ -59,6 +62,7 @@ struct uclient { union uclient_addr local_addr, remote_addr; struct uclient_url *url; + int timeout_msecs; void *priv; bool eof; @@ -67,6 +71,7 @@ struct uclient { int status_code; struct blob_attr *meta; + struct uloop_timeout connection_timeout; struct uloop_timeout timeout; }; @@ -82,6 +87,21 @@ struct uclient *uclient_new(const char *url, const char *auth_str, const struct void uclient_free(struct uclient *cl); int uclient_set_url(struct uclient *cl, const char *url, const char *auth); + +/** + * Sets connection timeout. + * + * Provided timeout value will be used for: + * 1) Receiving HTTP response + * 2) Receiving data + * + * In case of timeout uclient will use error callback with + * UCLIENT_ERROR_TIMEDOUT code. + * + * @param msecs timeout in milliseconds + */ +int uclient_set_timeout(struct uclient *cl, int msecs); + int uclient_connect(struct uclient *cl); void uclient_disconnect(struct uclient *cl); |