summaryrefslogtreecommitdiff
path: root/uclient-http.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-03-23 01:09:20 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-03-23 01:09:20 +0100
commit836aaddaf047e82129446e7c16fef660863fb9ba (patch)
treeb7b666af254b41bbbd85bec4b047ddf3ed4f892d /uclient-http.c
parent99e8d306d0cb552f85c44c0571cf5b6f9e8249c7 (diff)
downloaduclient-836aaddaf047e82129446e7c16fef660863fb9ba.tar.gz
move ssl_ctx to struct uclient_http
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Diffstat (limited to 'uclient-http.c')
-rw-r--r--uclient-http.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/uclient-http.c b/uclient-http.c
index 0ce43c2..b7c64c8 100644
--- a/uclient-http.c
+++ b/uclient-http.c
@@ -12,7 +12,6 @@
#include "uclient-utils.h"
#include "uclient-backend.h"
-static struct ustream_ssl_ctx *ssl_ctx;
static uint32_t nc;
enum auth_type {
@@ -47,6 +46,7 @@ static const char * const request_types[__REQ_MAX] = {
struct uclient_http {
struct uclient uc;
+ struct ustream_ssl_ctx *ssl_ctx;
struct ustream *us;
struct ustream_fd ufd;
@@ -653,13 +653,13 @@ static int uclient_setup_https(struct uclient_http *uh)
if (ret)
return ret;
- if (!ssl_ctx)
- ssl_ctx = ustream_ssl_context_new(false);
+ if (!uh->ssl_ctx)
+ uh->ssl_ctx = ustream_ssl_context_new(false);
us->string_data = true;
us->notify_state = uclient_ssl_notify_state;
us->notify_read = uclient_ssl_notify_read;
- ustream_ssl_init(&uh->ussl, &uh->ufd.stream, ssl_ctx, false);
+ ustream_ssl_init(&uh->ussl, &uh->ufd.stream, uh->ssl_ctx, false);
return 0;
}
@@ -695,6 +695,9 @@ static void uclient_http_free(struct uclient *cl)
{
struct uclient_http *uh = container_of(cl, struct uclient_http, uc);
+ if (uh->ssl_ctx)
+ ustream_ssl_context_free(uh->ssl_ctx);
+
uclient_http_free_url_state(cl);
blob_buf_free(&uh->headers);
blob_buf_free(&uh->meta);