From 8f3c3cd08a5b252002a4abfb19780850fc51040e Mon Sep 17 00:00:00 2001
From: Leonardo Taccari <iamleot@gmail.com>
Date: Thu, 23 Aug 2018 23:27:34 +0200
Subject: [PATCH] gopher: Do not translate `?' to `%09'

Since GOPHER support was added in curl `?' character was automatically
translated to `%09' (`\t').

However, this behaviour does not seems documented in RFC 4266 and for
search selectors it is documented to directly use `%09' in the URL.
Apart that several gopher servers in the current gopherspace have CGI
support where `?' is used as part of the selector and translating it to
`%09' often leads to surprising results.

Closes #2910
---
 lib/gopher.c        | 7 -------
 tests/data/test1202 | 2 +-
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/gopher.c b/lib/gopher.c
index b7c31b695..d65049969 100644
--- a/lib/gopher.c
+++ b/lib/gopher.c
@@ -93,18 +93,11 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
   }
   else {
     char *newp;
-    size_t j, i;
 
     /* Otherwise, drop / and the first character (i.e., item type) ... */
     newp = path;
     newp += 2;
 
-    /* ... then turn ? into TAB for search servers, Veronica, etc. ... */
-    j = strlen(newp);
-    for(i = 0; i<j; i++)
-      if(newp[i] == '?')
-        newp[i] = '\x09';
-
     /* ... and finally unescape */
     result = Curl_urldecode(data, newp, 0, &sel, &len, FALSE);
     if(result)
diff --git a/tests/data/test1202 b/tests/data/test1202
index 37d270acb..6c91a774c 100644
--- a/tests/data/test1202
+++ b/tests/data/test1202
@@ -26,7 +26,7 @@ gopher
 Gopher query
  </name>
  <command>
-"gopher://%HOSTIP:%GOPHERPORT/7/the/search/engine?query%20succeeded/1202"
+"gopher://%HOSTIP:%GOPHERPORT/7/the/search/engine%09query%20succeeded/1202"
 </command>
 </client>
 
-- 
2.40.0