From e03ae0ec26840c6f159d487f8050ff95977bdb58 Mon Sep 17 00:00:00 2001 From: Luca Faccin Date: Mon, 30 Apr 2018 11:14:58 +0200 Subject: [PATCH 1/2] Add support for custom timeout wit REQ_SET_TIMEOUT --- esp_request.c | 3 +++ include/esp_request.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/esp_request.c b/esp_request.c index cc7ec7d..f76cfca 100644 --- a/esp_request.c +++ b/esp_request.c @@ -380,6 +380,9 @@ void req_setopt(request_t *req, REQ_OPTS opt, void* data) case REQ_SET_PATH: req_list_set_key(req->opt, "path", data); break; + case REQ_SET_TIMEOUT: + req_list_set_key(req->opt,"timeout",data); + break; case REQ_SET_URI: req_setopt_from_uri(req, data); break; diff --git a/include/esp_request.h b/include/esp_request.h index b478be7..a7793de 100644 --- a/include/esp_request.h +++ b/include/esp_request.h @@ -36,7 +36,8 @@ typedef enum { REQ_FUNC_DOWNLOAD_CB, REQ_FUNC_UPLOAD_CB, REQ_REDIRECT_FOLLOW, - REQ_FUNC_WEBSOCKET + REQ_FUNC_WEBSOCKET, + REQ_SET_TIMEOUT } REQ_OPTS; typedef enum { From 80f85fe79536477aa10370810d4389e006cc96df Mon Sep 17 00:00:00 2001 From: Luca Faccin Date: Mon, 7 May 2018 10:26:46 +0200 Subject: [PATCH 2/2] Solved crash on timeout over SSL --- esp_request.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/esp_request.c b/esp_request.c index f76cfca..7dee17a 100644 --- a/esp_request.c +++ b/esp_request.c @@ -225,10 +225,13 @@ static int nossl_read(request_t *req, char *buffer, int len) } static int ssl_close(request_t *req) { - SSL_shutdown(req->ssl); - SSL_free(req->ssl); - close(req->socket); - SSL_CTX_free(req->ctx); + if(req->ssl != NULL) + { + SSL_shutdown(req->ssl); + SSL_free(req->ssl); + } + close(req->socket); + if(req->ssl != NULL) SSL_CTX_free(req->ctx); return 0; }