slackbuilds/network/felinks/patches/0002-gopher_index_queries.p...

114 lines
3.4 KiB
Diff

#######################################################################
# Fix for type 7 entities.
# dave@slackbuilds.org
#######################################################################
diff -Naur '--exclude=.git' bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
--- bb/src/protocol/gopher/gopher.c 2020-01-13 22:35:13.663935305 +0000
+++ cc/src/protocol/gopher/gopher.c 2020-01-13 23:16:00.053003768 +0000
@@ -197,7 +197,7 @@
command->length = strlen(command->source);
}
-static struct connection_state init_gopher_index_cache_entry(struct connection *conn);
+/* static struct connection_state init_gopher_index_cache_entry(struct connection *conn); */
static struct connection_state
add_gopher_command(struct connection *conn, struct string *command,
@@ -205,7 +205,7 @@
unsigned char *selector, int selectorlen)
{
unsigned char *query;
- int querylen;
+ int querylen = 0;
if (!init_string(command))
return connection_state(S_OUT_OF_MEM);
@@ -218,13 +218,14 @@
/* Exclude '?' */
if (query) selectorlen -= 1;
query = NULL;
- querylen = 0;
- } else {
- query += 1;
+ } else if (entity == GOPHER_INDEX) {
+ /* fix query size to not include the search= part */
+ query += 8;
querylen = selector + selectorlen - query;
/* Exclude '?' */
- selectorlen -= querylen + 1;
- if (querylen >= 7 && !c_strncasecmp(query, "search=", 7)) {
+ /* fix selector length to fit with query */
+ selectorlen -= querylen + 8;
+ if (querylen >= 7 && !c_strncasecmp(query, "submit=", 7)) {
query += 7;
querylen -= 7;
}
@@ -233,9 +234,11 @@
switch (entity) {
case GOPHER_INDEX:
/* No search required? */
+ /* Don't display the form page */
if (!query) {
done_string(command);
- return init_gopher_index_cache_entry(conn);
+ add_uri_decoded(command, selector, selectorlen, 0);
+ break;
}
add_uri_decoded(command, selector, selectorlen, 0);
@@ -371,13 +374,14 @@
add_gopher_search_field(struct string *buffer, const unsigned char *text,
const unsigned char *addr)
{
+ /* Not *every* query is a search! */
add_format_to_string(buffer,
"<form action=\"%s\">"
"<table>"
"<td> </td>"
"<td>%s:</td>"
- "<td><input maxlength=\"256\" name=\"search\" value=\"\"></td>"
- "<td><input type=submit value=\"Search\"></td>"
+ "<td><input maxlength=\"256\" name=\"submit\" value=\"\"></td>"
+ "<td><input type=submit value=\"Submit\"></td>"
"</table>"
"</form>",
addr, text);
@@ -662,6 +666,7 @@
}
/* Display a Gopher Index document. */
+/* Use the page that the gopher site sends us
static struct connection_state
init_gopher_index_cache_entry(struct connection *conn)
{
@@ -674,9 +679,9 @@
where = get_uri_string(conn->uri, URI_PUBLIC);
- /* TODO: Use different function when using UTF-8
+ TODO: Use different function when using UTF-8
* in terminal (decode_uri_for_display replaces
- * bytes of UTF-8 characters width '*'). */
+ * bytes of UTF-8 characters width '*'). *
if (where) decode_uri_for_display(where);
add_format_to_string(&buffer,
@@ -695,7 +700,7 @@
mem_free_if(where);
- /* FIXME: I think this needs a form or something */
+ * FIXME: I think this needs a form or something *
add_fragment(conn->cached, conn->from, buffer.source, buffer.length);
conn->from += buffer.length;
@@ -707,7 +712,7 @@
? connection_state(S_OK)
: connection_state(S_OUT_OF_MEM);
}
-
+*/
static void
read_gopher_response_data(struct socket *socket, struct read_buffer *rb)