From 10582beb2ac3d32a73c09007cd7a5079385ae893 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Sun, 26 Apr 2020 01:12:39 -0700
Subject: [PATCH] Revert "Don't send httpsource in SERVERINFO if join password
 is set"

This reverts commit abd15288b4a6d977b0e0b7542d614e5241f5e7c3.
---
 src/d_clisrv.c | 87 ++++++++++++++++++++++++--------------------------
 1 file changed, 41 insertions(+), 46 deletions(-)

diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 6d657dd99..440d029aa 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -1479,18 +1479,15 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
 	netbuffer->u.serverinfo.actnum = 0; //mapheaderinfo[gamemap-1]->actnum
 
 #ifdef HAVE_CURL
-	if (! D_IsJoinPasswordOn())
-	{
-		mirror_length = strlen(httpurl);
-		if (mirror_length > MAX_MIRROR_LENGTH)
-			mirror_length = MAX_MIRROR_LENGTH;
+	mirror_length = strlen(httpurl);
+	if (mirror_length > MAX_MIRROR_LENGTH)
+		mirror_length = MAX_MIRROR_LENGTH;
 
-		if (snprintf(netbuffer->u.serverinfo.httpsource, mirror_length+1, "%s", httpurl) < 0)
-			// If there's an encoding error, send nothing, we accept that the above may be truncated
-			strncpy(netbuffer->u.serverinfo.httpsource, "", mirror_length);
+	if (snprintf(netbuffer->u.serverinfo.httpsource, mirror_length+1, "%s", httpurl) < 0)
+		// If there's an encoding error, send nothing, we accept that the above may be truncated
+		strncpy(netbuffer->u.serverinfo.httpsource, "", mirror_length);
 
-		netbuffer->u.serverinfo.httpsource[MAX_MIRROR_LENGTH-1] = '\0';
-	}
+	netbuffer->u.serverinfo.httpsource[MAX_MIRROR_LENGTH-1] = '\0';
 #endif
 
 	p = PutFileNeeded(0);
@@ -2062,6 +2059,16 @@ static boolean CL_ServerConnectionSearchTicker(boolean viams, tic_t *asksent)
 
 		if (client)
 		{
+#ifdef HAVE_CURL
+			if (serverlist[i].info.httpsource[0])
+				strncpy(http_source, serverlist[i].info.httpsource, MAX_MIRROR_LENGTH);
+			else
+				http_source[0] = '\0';
+#else
+			if (serverlist[i].info.httpsource[0])
+				CONS_Printf("We received a http url from the server, however it will not be used as this build lacks curl support (%s)\n", serverlist[i].info.httpsource);
+#endif
+
 			D_ParseFileneeded(serverlist[i].info.fileneedednum, serverlist[i].info.fileneeded, 0);
 			if (serverlist[i].info.kartvars & SV_LOTSOFADDONS)
 			{
@@ -4179,52 +4186,40 @@ static void HandlePacketFromAwayNode(SINT8 node)
 
 			SERVERONLY
 
-			if (netbuffer->u.filecfg.http_source[0] != '\0')
-			{
-				netbuffer->u.filecfg.http_source[MAX_MIRROR_LENGTH-1] = '\0';
-
 #ifdef HAVE_CURL
-				if (! curl_failedwebdownload)
-				{
-					strncpy(http_source, netbuffer->u.filecfg.http_source,
-							sizeof http_source);
+			if (! curl_failedwebdownload &&
+					netbuffer->u.filecfg.http_source[0] != '\0'
+			){
+				strlcpy(http_source, netbuffer->u.filecfg.http_source,
+						MAX_MIRROR_LENGTH);
 
-					cl_mode = CL_PREPAREHTTPFILES;
-				}
-#else
-				CONS_Printf("We received a http url from the server, however it will not be used as this build lacks curl support (%s)\n", netbuffer->u.filecfg.http_source);
-#endif
+				cl_mode = CL_PREPAREHTTPFILES;
 			}
-
-			if (cl_mode == CL_WAITDOWNLOADFILESRESPONSE)
+			else
+#endif
+			if (!CL_CheckDownloadable())
 			{
-				if (CL_CheckDownloadable())
-				{
-					CONS_Printf("trying to download\n");
-					if (CL_SendRequestFile())
-						cl_mode = CL_DOWNLOADFILES;
-				}
-				else
-				{
-					D_QuitNetGame();
-					CL_Reset();
-					D_StartTitle();
-					M_StartMessage(M_GetText(
-								"You cannot connect to this server\n"
-								"because you cannot download the files\n"
-								"that you are missing from the server.\n\n"
-								"See the console or log file for\n"
-								"more details.\n\n"
-								"Press ESC\n"
-					), NULL, MM_NOTHING);
-					break;
-				}
+				D_QuitNetGame();
+				CL_Reset();
+				D_StartTitle();
+				M_StartMessage(M_GetText(
+					"You cannot connect to this server\n"
+					"because you cannot download the files\n"
+					"that you are missing from the server.\n\n"
+					"See the console or log file for\n"
+					"more details.\n\n"
+					"Press ESC\n"
+				), NULL, MM_NOTHING);
+				break;
 			}
 
 			if (cl_challengeattempted == 1) // Successful password noise.
 				S_StartSound(NULL, sfx_s221);
 
 			cl_challengeattempted = 2;
+			CONS_Printf("trying to download\n");
+			if (cl_mode == CL_WAITDOWNLOADFILESRESPONSE && CL_SendRequestFile())
+					cl_mode = CL_DOWNLOADFILES;
 			break;
 
 		case PT_SERVERCFG: // Positive response of client join request
-- 
GitLab