diff --git a/src/hms123311.c b/src/hms123311.c
index d9d4fa2f8e3d4750c122582548589b77d9b3a26a..f0eaca270814bfba99280dc2a513829018a169b6 100644
--- a/src/hms123311.c
+++ b/src/hms123311.c
@@ -32,6 +32,11 @@ consvar_t cv_masterserver_token = {
 	NULL, NULL, 0, NULL, NULL, 0, 0, NULL/* C90 moment */
 };
 
+consvar_t cv_masterserver_debug = {
+	"masterserver_debug", "Off", CV_SAVE, CV_OnOff,
+	NULL, 0, NULL, NULL, 0, 0, NULL/* C90 moment */
+};
+
 static int hms_started;
 
 static char hms_server_token[sizeof "xxx.xxx.xxx.xxx/xxxxx"];
@@ -97,6 +102,8 @@ HMS_connect (const char *format, ...)
 	buffer->buffer = malloc(buffer->end);
 	buffer->needle = 0;
 
+	if (cv_masterserver_debug.value)
+		curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 	curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
 	curl_easy_setopt(curl, CURLOPT_URL, url);
 	curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
diff --git a/src/mserv.c b/src/mserv.c
index c493ed4dcac502718593b828800c938b6ea9f92d..80389ffb243efa000a727acb8bc2b8fd481c8f6e 100644
--- a/src/mserv.c
+++ b/src/mserv.c
@@ -233,6 +233,7 @@ void AddMServCommands(void)
 	CV_RegisterVar(&cv_masterserver);
 	CV_RegisterVar(&cv_http_masterserver);
 	CV_RegisterVar(&cv_masterserver_token);
+	CV_RegisterVar(&cv_masterserver_debug);
 	CV_RegisterVar(&cv_servername);
 	COM_AddCommand("listserv", Command_Listserv_f);
 #endif
diff --git a/src/mserv.h b/src/mserv.h
index 7c042d42aee3df46c0244a8161076a335691343c..187a963a87933443f98ed7a8e1570e9fefbfe571 100644
--- a/src/mserv.h
+++ b/src/mserv.h
@@ -66,6 +66,7 @@ typedef struct
 extern consvar_t cv_masterserver, cv_servername;
 extern consvar_t cv_http_masterserver;
 extern consvar_t cv_masterserver_token;
+extern consvar_t cv_masterserver_debug;
 
 // < 0 to not connect (usually -1) (offline mode)
 // == 0 to show all rooms, not a valid hosting room