summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2019-10-01 17:54:05 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2019-10-01 17:54:05 +0000
commit669b37f51c0a0f1653f45c806c66272623832b1d (patch)
treebe5920c14880d6b4abd29bc452b21a59aeca8a52
parentcd67bc5da301cbce50aebbaa43672c99af933acf (diff)
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>.
-rw-r--r--usr.bin/mandoc/cgi.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c
index 257d5ad659c..688b0e50728 100644
--- a/usr.bin/mandoc/cgi.c
+++ b/usr.bin/mandoc/cgi.c
@@ -1,7 +1,7 @@
-/* $OpenBSD: cgi.c,v 1.105 2019/07/10 12:48:08 schwarze Exp $ */
+/* $OpenBSD: cgi.c,v 1.106 2019/10/01 17:54:04 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
@@ -73,7 +73,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 *,
@@ -542,12 +543,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();
}
@@ -1012,9 +1014,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);