summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbenno <benno@openbsd.org>2012-04-30 10:49:57 +0000
committerbenno <benno@openbsd.org>2012-04-30 10:49:57 +0000
commit9907692c7a2247ed8e73499d30472031e62d5dc3 (patch)
tree8ff61af7a045f115293aa1f81821f7e12a2a5cb6
parentmore refactor (diff)
downloadwireguard-openbsd-9907692c7a2247ed8e73499d30472031e62d5dc3.tar.xz
wireguard-openbsd-9907692c7a2247ed8e73499d30472031e62d5dc3.zip
The message-body should be forwarded for GET,HEAD and OPTIONS methods as well.
ok giovanni@, phessler@, henning@
-rw-r--r--usr.sbin/relayd/relay.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/usr.sbin/relayd/relay.c b/usr.sbin/relayd/relay.c
index 58d5f48795c..5dab14af95d 100644
--- a/usr.sbin/relayd/relay.c
+++ b/usr.sbin/relayd/relay.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: relay.c,v 1.147 2012/04/27 14:01:35 giovanni Exp $ */
+/* $OpenBSD: relay.c,v 1.148 2012/04/30 10:49:57 benno Exp $ */
/*
* Copyright (c) 2006, 2007, 2008 Reyk Floeter <reyk@openbsd.org>
@@ -1373,6 +1373,9 @@ relay_read_http(struct bufferevent *bev, void *arg)
goto abort;
}
} else if ((cre->method == HTTP_METHOD_DELETE ||
+ cre->method == HTTP_METHOD_GET ||
+ cre->method == HTTP_METHOD_HEAD ||
+ cre->method == HTTP_METHOD_OPTIONS ||
cre->method == HTTP_METHOD_POST ||
cre->method == HTTP_METHOD_PUT ||
cre->method == HTTP_METHOD_RESPONSE) &&
@@ -1389,6 +1392,14 @@ relay_read_http(struct bufferevent *bev, void *arg)
relay_close_http(con, 500, errstr, 0);
goto abort;
}
+ } else if ((cre->method == HTTP_METHOD_TRACE) &&
+ strcasecmp("Content-Length", pk.key) == 0) {
+ /*
+ * This method should not have a body and thus no
+ * Content-Length header.
+ */
+ relay_close_http(con, 400, "malformed", 0);
+ goto abort;
}
lookup:
if (strcasecmp("Transfer-Encoding", pk.key) == 0 &&
@@ -1468,6 +1479,9 @@ relay_read_http(struct bufferevent *bev, void *arg)
bev->readcb = relay_read;
break;
case HTTP_METHOD_DELETE:
+ case HTTP_METHOD_GET:
+ case HTTP_METHOD_HEAD:
+ case HTTP_METHOD_OPTIONS:
case HTTP_METHOD_POST:
case HTTP_METHOD_PUT:
case HTTP_METHOD_RESPONSE: