From 4337731845630b13e3482a3da68ad69805f6f045 Mon Sep 17 00:00:00 2001 From: Lammert Bies Date: Wed, 16 Nov 2016 17:13:19 +0100 Subject: [PATCH] Moved mg_get_response to own file --- Makefile | 1 + src/httplib_get_response.c | 68 ++++++++++++++++++++++++++++++++++++++ src/libhttp.c | 33 ------------------ 3 files changed, 69 insertions(+), 33 deletions(-) create mode 100644 src/httplib_get_response.c diff --git a/Makefile b/Makefile index 5a286b19..eac176b4 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,7 @@ LIB_SOURCES = src/libhttp.c \ src/httplib_consume_socket.c \ src/httplib_download.c \ src/httplib_free_context.c \ + src/httplib_get_response.c \ src/httplib_get_response_code_text.c \ src/httplib_get_system_name.c \ src/httplib_master_thread.c \ diff --git a/src/httplib_get_response.c b/src/httplib_get_response.c new file mode 100644 index 00000000..05994d4d --- /dev/null +++ b/src/httplib_get_response.c @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2016 Lammert Bies + * Copyright (c) 2013-2016 the Civetweb developers + * Copyright (c) 2004-2013 Sergey Lyubka + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + + +#include "libhttp-private.h" + + + +/* + * int mg_get_response( struct mg_connection *conn, char *ebuf, size_t ebuf_len, int timeout ); + * + * The function mg_get_response tries to get a response from a remote peer. + */ + +int mg_get_response( struct mg_connection *conn, char *ebuf, size_t ebuf_len, int timeout ) { + + if (conn) { + /* Implementation of API function for HTTP clients */ + int err, ret; + struct mg_context *octx = conn->ctx; + struct mg_context rctx = *(conn->ctx); + char txt[32]; /* will not overflow */ + + if (timeout >= 0) { + XX_httplib_snprintf(conn, NULL, txt, sizeof(txt), "%i", timeout); + rctx.config[REQUEST_TIMEOUT] = txt; + XX_httplib_set_sock_timeout(conn->client.sock, timeout); + } else { + rctx.config[REQUEST_TIMEOUT] = NULL; + } + + conn->ctx = &rctx; + ret = XX_httplib_getreq(conn, ebuf, ebuf_len, &err); + conn->ctx = octx; + + /* TODO: 1) uri is deprecated; + * 2) here, ri.uri is the http response code */ + conn->request_info.uri = conn->request_info.request_uri; + + /* TODO (mid): Define proper return values - maybe return length? + * For the first test use <0 for error and >0 for OK */ + return (ret == 0) ? -1 : +1; + } + return -1; + +} /* mg_get_response */ diff --git a/src/libhttp.c b/src/libhttp.c index 289da6a3..cb22105f 100644 --- a/src/libhttp.c +++ b/src/libhttp.c @@ -9779,36 +9779,3 @@ int XX_httplib_getreq( struct mg_connection *conn, char *ebuf, size_t ebuf_len, return 1; } /* XX_httplib_getreq */ - - -int mg_get_response(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int timeout) { - - if (conn) { - /* Implementation of API function for HTTP clients */ - int err, ret; - struct mg_context *octx = conn->ctx; - struct mg_context rctx = *(conn->ctx); - char txt[32]; /* will not overflow */ - - if (timeout >= 0) { - XX_httplib_snprintf(conn, NULL, txt, sizeof(txt), "%i", timeout); - rctx.config[REQUEST_TIMEOUT] = txt; - XX_httplib_set_sock_timeout(conn->client.sock, timeout); - } else { - rctx.config[REQUEST_TIMEOUT] = NULL; - } - - conn->ctx = &rctx; - ret = XX_httplib_getreq(conn, ebuf, ebuf_len, &err); - conn->ctx = octx; - - /* TODO: 1) uri is deprecated; - * 2) here, ri.uri is the http response code */ - conn->request_info.uri = conn->request_info.request_uri; - - /* TODO (mid): Define proper return values - maybe return length? - * For the first test use <0 for error and >0 for OK */ - return (ret == 0) ? -1 : +1; - } - return -1; -}