Hi,

I've encountered the exact same issue. I think this is due to a miss
handling of message-body.

RFC2616 states in chapter 4.3 that:

> The presence of a message-body in a request is signaled by the
> inclusion of a Content-Length or Transfer-Encoding header field in
> the request's message-headers. A message-body MUST NOT be included in
> a request if the specification of the request method (section 5.1.1)
> does not allow sending an entity-body in requests. A server SHOULD
> read and forward a message-body on any request; if the request method
> does not include defined semantics for an entity-body, then the
> message-body SHOULD be ignored when handling the request.
> 

Thus we should not ignore message-body for unknown methods by forcing
cre->toread to TOREAD_HTTP_HEADER.

Please find attached a patch that just allow http request to have a
message-body whatever the method is.

Regards,
Paul

> 2016-06-24 11:01:03
> <[email protected]>:
> 
> Hi,
> 
> thanks, this is the second report regarding WebDAV since yesterday. I'll
> have a look \
> at this when I'm back home next week.
> 
> Reyk
> 
> > Am 24.06.2016 um 09:21 schrieb Michael Lechtermann
> > <[email protected]>:
> > 
> > Hi,
> > 
> > I have recently configured relayd as SSL accelerator and it is working
> > really \
> > great. However it seems that not all http methods that are mentioned
> > in the man \
> > page are actually supported by the http protocol. 
> > method name
> > Match the HTTP request method.  The method is specified by name
> > and can be either CONNECT, COPY, DELETE, GET, HEAD, LOCK, MKCOL,
> > MOVE, OPTIONS, PATCH, POST, PROPFIND, PROPPATCH, PUT, TRACE, or
> > UNLOCK.
> > 
> > The above list is from "man relayd.conf" and I would assume that those
> > methods, if \
> > mentioned, are fully supported, however when trying to use Apache2
> > with mod_dav_svn \
> > (ap2-subversion) relayd somehow breaks it: 
> > # svn up
> > svn: Server sent unexpected return value (400 Bad Request) in response
> > to OPTIONS \
> > request for 'https://<url>/svn/repo' 
> > This was tested using OpenBSD 5.9. If more information is required,
> > please say so.
> > 
> > Regards,
> > Michael
> > 
Index: relay_http.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relay_http.c,v
retrieving revision 1.55
diff -r1.55 relay_http.c
375a376
>               default:
385,389d385
<                       break;
<               default:
<                       /* HTTP handler */
<                       cre->toread = TOREAD_HTTP_HEADER;
<                       bev->readcb = relay_read_http;

Reply via email to