tWrite metaserver response headers to the log - vaccinewars - be a doctor and t… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 74f44284b82d1b00d0e62f3357b115f1e9cb3bc3 | |
parent 99ec22bffe4bc8d372bf2c233389f2da63fa8c71 | |
Author: Ben Webb <[email protected]> | |
Date: Fri, 30 Oct 2020 11:14:12 -0700 | |
Write metaserver response headers to the log | |
Diffstat: | |
M src/network.h | 1 + | |
M src/serverside.c | 32 ++++++++++++++++++++++++++++-… | |
2 files changed, 30 insertions(+), 3 deletions(-) | |
--- | |
diff --git a/src/network.h b/src/network.h | |
t@@ -70,6 +70,7 @@ typedef struct _CurlConnection { | |
char Terminator; /* Character that separates messages */ | |
char StripChar; /* Char that should be removed | |
* from messages */ | |
+ GPtrArray *headers; | |
} CurlConnection; | |
typedef struct _ConnBuf { | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -121,6 +121,17 @@ static size_t MetaConnWriteFunc(void *contents, size_t si… | |
return realsize; | |
} | |
+ | |
+static size_t MetaConnHeaderFunc(char *contents, size_t size, size_t nmemb, vo… | |
+{ | |
+ size_t realsize = size * nmemb; | |
+ CurlConnection *conn = (CurlConnection *)userp; | |
+ | |
+ gchar *str = g_strchomp(g_strndup(contents, realsize)); | |
+ g_ptr_array_add(conn->headers, (gpointer)str); | |
+ return realsize; | |
+} | |
+ | |
#endif | |
/* Handle to the high score file */ | |
t@@ -183,6 +194,7 @@ void CurlInit(CurlConnection *conn) | |
conn->Terminator = '\n'; | |
conn->StripChar = '\r'; | |
conn->data_size = 0; | |
+ conn->headers = NULL; | |
} | |
void CloseCurlConnection(CurlConnection *conn) | |
t@@ -191,6 +203,8 @@ void CloseCurlConnection(CurlConnection *conn) | |
g_free(conn->data); | |
conn->data_size = 0; | |
conn->running = FALSE; | |
+ g_ptr_array_free(conn->headers, TRUE); | |
+ conn->headers = NULL; | |
} | |
void CurlCleanup(CurlConnection *conn) | |
t@@ -247,14 +261,18 @@ const char *OpenCurlConnection(CurlConnection *conn, cha… | |
if (res != CURLE_OK) return curl_easy_strerror(res); | |
res = curl_easy_setopt(conn->h, CURLOPT_WRITEDATA, conn); | |
if (res != CURLE_OK) return curl_easy_strerror(res); | |
+ res = curl_easy_setopt(conn->h, CURLOPT_HEADERFUNCTION, MetaConnHeaderFunc… | |
+ if (res != CURLE_OK) return curl_easy_strerror(res); | |
+ res = curl_easy_setopt(conn->h, CURLOPT_HEADERDATA, conn); | |
+ if (res != CURLE_OK) return curl_easy_strerror(res); | |
- conn->data = g_malloc(1); | |
- conn->data_size = 0; | |
mres = curl_multi_add_handle(conn->multi, conn->h); | |
if (mres != CURLM_OK && mres != CURLM_CALL_MULTI_PERFORM) { | |
- g_free(conn->data); | |
return curl_multi_strerror(mres); | |
} | |
+ conn->data = g_malloc(1); | |
+ conn->data_size = 0; | |
+ conn->headers = g_ptr_array_new_with_free_func(g_free); | |
conn->running = TRUE; | |
errstr = CurlConnectionPerform(conn, &still_running); | |
if (errstr) { | |
t@@ -279,6 +297,13 @@ char *CurlNextLine(CurlConnection *conn, char *ch) | |
return sep_pt; | |
} | |
+void log_meta_headers(gpointer data, gpointer user_data) | |
+{ | |
+ char *header = data; | |
+ if (*header) | |
+ dopelog(4, LF_SERVER, "MetaServer: %s", header); | |
+} | |
+ | |
static void ServerHttpAuth(HttpConnection *conn, gboolean proxyauth, | |
gchar *realm, gpointer data) | |
{ | |
t@@ -1409,6 +1434,7 @@ void ServerLoop(struct CMDLINE *cmdline) | |
if (IsServerShutdown()) | |
break; | |
} else if (still_running == 0) { | |
+ g_ptr_array_foreach(MetaConn.headers, log_meta_headers, NULL); | |
char *ch = MetaConn.data; | |
while(ch && *ch) { | |
char *nextch = CurlNextLine(&MetaConn, ch); |