From 492eb6b3e0939f84ced126653c02a7d1016afb65 Mon Sep 17 00:00:00 2001 From: Viktor Persson Date: Thu, 27 Oct 2022 16:21:37 +0200 Subject: [PATCH 1/2] Add demo_filenames.txt endpoint to http server. --- src/httpsv.c | 4 ++++ src/httpsv_generate.c | 16 ++++++++++++++++ src/qtv.h | 1 + 3 files changed, 21 insertions(+) diff --git a/src/httpsv.c b/src/httpsv.c index d77e61e..9a0879a 100644 --- a/src/httpsv.c +++ b/src/httpsv.c @@ -528,6 +528,10 @@ void HTTPSV_GetMethod(cluster_t *cluster, oproxy_t *pend) { HTTPSV_GenerateDemoListing(cluster, pend); } + else if (URLCOMPARE(getpath, "/demo_filenames.txt", skiplen)) + { + HTTPSV_GenerateDemoFilenamesTxt(cluster, pend); + } else if (!strcmp(getpath, "/style.css")) { HTTPSV_GenerateCSSFile(cluster, pend); diff --git a/src/httpsv_generate.c b/src/httpsv_generate.c index 1e850e7..53611e4 100644 --- a/src/httpsv_generate.c +++ b/src/httpsv_generate.c @@ -704,6 +704,22 @@ void HTTPSV_GenerateDemoListing(cluster_t *cluster, oproxy_t *dest) HTTPSV_SendHTMLFooter(cluster, dest); } +void HTTPSV_GenerateDemoFilenamesTxt(cluster_t *cluster, oproxy_t *dest) +{ + dest->_bufferautoadjustmaxsize_ = 1024 * 1024; // NOTE: this allow 1MB buffer... + char row_buf[1024]; + int i; + + HTTPSV_SendHTTPHeader(cluster, dest, "200", "text/plain", true); + + Cluster_BuildAvailableDemoList(cluster); + for (i = 0; i < cluster->availdemoscount; i++) + { + snprintf(row_buf, sizeof(row_buf), "%s%s", cluster->availdemos[i].name, CRLF); + Net_ProxySend(cluster, dest, row_buf, strlen(row_buf)); + } +} + void HTTPSV_GenerateImage(cluster_t *cluster, oproxy_t *dest, char *imgfilename) { int s; diff --git a/src/qtv.h b/src/qtv.h index 9f18f51..5fe8568 100644 --- a/src/qtv.h +++ b/src/qtv.h @@ -1069,6 +1069,7 @@ void HTTPSV_GenerateQTVStub(cluster_t *cluster, oproxy_t *dest, char *streamty void HTTPSV_GenerateQTVJoinStub(cluster_t *cluster, oproxy_t *dest, char *streamid); void HTTPSV_GenerateAdmin(cluster_t *cluster, oproxy_t *dest, int streamid, char *postbody); void HTTPSV_GenerateDemoListing(cluster_t *cluster, oproxy_t *dest); +void HTTPSV_GenerateDemoFilenamesTxt(cluster_t *cluster, oproxy_t *dest); void HTTPSV_GenerateImage(cluster_t *cluster, oproxy_t *dest, char *imgfilename); void HTTPSV_GenerateLevelshot(cluster_t *cluster, oproxy_t *dest, char *name); void HTTPSV_GenerateDemoDownload(cluster_t *cluster, oproxy_t *dest, char *name); From 124efe46a0ddcba3334f415e6ce444aeded2edf8 Mon Sep 17 00:00:00 2001 From: Viktor Persson Date: Fri, 28 Oct 2022 13:01:34 +0200 Subject: [PATCH 2/2] Refactor demo filenames endpoint. --- src/httpsv.c | 4 ++-- src/httpsv_generate.c | 20 +++++++++++++------- src/qtv.h | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/httpsv.c b/src/httpsv.c index 9a0879a..9af12a4 100644 --- a/src/httpsv.c +++ b/src/httpsv.c @@ -528,9 +528,9 @@ void HTTPSV_GetMethod(cluster_t *cluster, oproxy_t *pend) { HTTPSV_GenerateDemoListing(cluster, pend); } - else if (URLCOMPARE(getpath, "/demo_filenames.txt", skiplen)) + else if (URLCOMPARE(getpath, "/demo_filenames", skiplen)) { - HTTPSV_GenerateDemoFilenamesTxt(cluster, pend); + HTTPSV_GenerateDemoFilenames(cluster, pend); } else if (!strcmp(getpath, "/style.css")) { diff --git a/src/httpsv_generate.c b/src/httpsv_generate.c index 53611e4..f46ed3e 100644 --- a/src/httpsv_generate.c +++ b/src/httpsv_generate.c @@ -704,19 +704,25 @@ void HTTPSV_GenerateDemoListing(cluster_t *cluster, oproxy_t *dest) HTTPSV_SendHTMLFooter(cluster, dest); } -void HTTPSV_GenerateDemoFilenamesTxt(cluster_t *cluster, oproxy_t *dest) +void HTTPSV_GenerateDemoFilenames(cluster_t *cluster, oproxy_t *dest) { - dest->_bufferautoadjustmaxsize_ = 1024 * 1024; // NOTE: this allow 1MB buffer... char row_buf[1024]; - int i; + int i; + + if (dest != NULL) { + dest->_bufferautoadjustmaxsize_ = 1024 * 1024; // NOTE: this allow 1MB buffer... + } HTTPSV_SendHTTPHeader(cluster, dest, "200", "text/plain", true); Cluster_BuildAvailableDemoList(cluster); - for (i = 0; i < cluster->availdemoscount; i++) - { - snprintf(row_buf, sizeof(row_buf), "%s%s", cluster->availdemos[i].name, CRLF); - Net_ProxySend(cluster, dest, row_buf, strlen(row_buf)); + + if (cluster != NULL) { + for (i = 0; i < cluster->availdemoscount; i++) + { + snprintf(row_buf, sizeof(row_buf), "%s%s", cluster->availdemos[i].name, CRLF); + Net_ProxySend(cluster, dest, row_buf, strlen(row_buf)); + } } } diff --git a/src/qtv.h b/src/qtv.h index 5fe8568..fca9386 100644 --- a/src/qtv.h +++ b/src/qtv.h @@ -1069,7 +1069,7 @@ void HTTPSV_GenerateQTVStub(cluster_t *cluster, oproxy_t *dest, char *streamty void HTTPSV_GenerateQTVJoinStub(cluster_t *cluster, oproxy_t *dest, char *streamid); void HTTPSV_GenerateAdmin(cluster_t *cluster, oproxy_t *dest, int streamid, char *postbody); void HTTPSV_GenerateDemoListing(cluster_t *cluster, oproxy_t *dest); -void HTTPSV_GenerateDemoFilenamesTxt(cluster_t *cluster, oproxy_t *dest); +void HTTPSV_GenerateDemoFilenames(cluster_t *cluster, oproxy_t *dest); void HTTPSV_GenerateImage(cluster_t *cluster, oproxy_t *dest, char *imgfilename); void HTTPSV_GenerateLevelshot(cluster_t *cluster, oproxy_t *dest, char *name); void HTTPSV_GenerateDemoDownload(cluster_t *cluster, oproxy_t *dest, char *name);