aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cgi.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2019-10-01 17:54:14 +0000
committerIngo Schwarze <schwarze@openbsd.org>2019-10-01 17:54:14 +0000
commit7f7a48c16e03586a8b90e80c803f6ba9fbd12aea (patch)
treec41e8488dcc84e40f11cd0499bd9bd6f60ef0a30 /cgi.c
parentdb2d16f56377f1c3ad5da3fb0e06f90f377677c1 (diff)
downloadmandoc-7f7a48c16e03586a8b90e80c803f6ba9fbd12aea.tar.gz
mandoc-7f7a48c16e03586a8b90e80c803f6ba9fbd12aea.tar.zst
mandoc-7f7a48c16e03586a8b90e80c803f6ba9fbd12aea.zip
For invalid queries and for valid queries returning no result,
return the appropriate 40x status code rather than 200. Improvement suggested and diff tested by John Gardner <gardnerjohng at gmail dot com>.
Diffstat (limited to 'cgi.c')
-rw-r--r--cgi.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/cgi.c b/cgi.c
index 4762f819..18b9379e 100644
--- a/cgi.c
+++ b/cgi.c
@@ -1,7 +1,7 @@
-/* $Id: cgi.c,v 1.167 2019/07/10 12:49:20 schwarze Exp $ */
+/* $Id: cgi.c,v 1.168 2019/10/01 17:54:14 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2014, 2015, 2016, 2017, 2018 Ingo Schwarze <schwarze@usta.de>
+ * Copyright (c) 2014-2019 Ingo Schwarze <schwarze@usta.de>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -77,7 +77,8 @@ static void parse_query_string(struct req *, const char *);
static void pg_error_badrequest(const char *);
static void pg_error_internal(void);
static void pg_index(const struct req *);
-static void pg_noresult(const struct req *, const char *);
+static void pg_noresult(const struct req *, int, const char *,
+ const char *);
static void pg_redirect(const struct req *, const char *);
static void pg_search(const struct req *);
static void pg_searchres(const struct req *,
@@ -546,12 +547,13 @@ pg_index(const struct req *req)
}
static void
-pg_noresult(const struct req *req, const char *msg)
+pg_noresult(const struct req *req, int code, const char *http_msg,
+ const char *user_msg)
{
- resp_begin_html(200, NULL, NULL);
+ resp_begin_html(code, http_msg, NULL);
resp_searchform(req, FOCUS_QUERY);
puts("<p>");
- puts(msg);
+ puts(user_msg);
puts("</p>");
resp_end_html();
}
@@ -1016,9 +1018,10 @@ pg_search(const struct req *req)
if (req->isquery && req->q.equal && argc == 1)
pg_redirect(req, argv[0]);
else if (mansearch(&search, &paths, argc, argv, &res, &ressz) == 0)
- pg_noresult(req, "You entered an invalid query.");
+ pg_noresult(req, 400, "Bad Request",
+ "You entered an invalid query.");
else if (ressz == 0)
- pg_noresult(req, "No results found.");
+ pg_noresult(req, 404, "Not Found", "No results found.");
else
pg_searchres(req, res, ressz);