Another month has passed, another friendly bump...

patch against -current attached, for convenience...

Marcus

Index: relay_http.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relay_http.c,v
retrieving revision 1.80
diff -u -p -u -r1.80 relay_http.c
--- relay_http.c        9 Jan 2021 08:53:58 -0000       1.80
+++ relay_http.c        14 Feb 2021 11:03:12 -0000
@@ -527,7 +527,7 @@ relay_read_http(struct bufferevent *bev,
                 * Ask the server to close the connection after this request
                 * since we don't read any further request headers.
                 */
-               if (cre->toread == TOREAD_UNLIMITED)
+               if (cre->toread == TOREAD_UNLIMITED && upgrade == NULL)
                        if (kv_add(&desc->http_headers, "Connection",
                            "close", 0) == NULL)
                                goto fail;

mcmer-open...@tor.at (Marcus MERIGHI), 2021.01.04 (Mon) 12:59 (CET):
> One month has passed, this is just a friendly ping...
> 
> Marcus
> 
> mcmer-open...@tor.at (Marcus MERIGHI), 2020.12.04 (Fri) 14:18 (CET):
> > This patch wasn't commited and not discussed (publicly). 
> > 
> > It lets me use relayd as a front-end to the mattermost-server.
> > 
> > @franz: Thank you!
> > 
> > fr...@bett.ag (Franz Bettag), 2020.03.04 (Wed) 17:52 (CET):
> > > After migrating my home setup from nginx reverse proxying to relayd, i
> > > noticed my iOS devices having issues connecting through Websockets.
> > > After debugging, i noticed that relayd adds the "Connection: close"
> > > regardless of upgrade being requested.
> > > 
> > > This issue is also reported on a blog-post using relayd as a Websocket
> > > Client. https://deftly.net/posts/2019-10-23-websockets-with-relayd.html
> > > 
> > > This resulted in the response having two Connection Headers, one
> > > "Connection: upgrade" and one "Connection: close", which iOS strict
> > > implementation does not allow.
> > > 
> > > I have fixed the if condition that leads to this issue.
> > > 
> > > The fix has been tested with Apple iOS 13 and the problem can be
> > > observed using Firefox and just connecting to something Websocket over
> > > relayd. Both "Connection:" headers will appear.
> > > 
> > > best regards
> > > 
> > > Franz
> > > 
> > > 
> > > diff --git usr.sbin/relayd/relay_http.c usr.sbin/relayd/relay_http.c
> > > index 960d4c54a..3a6678790 100644
> > > --- usr.sbin/relayd/relay_http.c
> > > +++ usr.sbin/relayd/relay_http.c
> > > @@ -524,9 +524,11 @@ relay_read_http(struct bufferevent *bev, void *arg)
> > > 
> > >           /*
> > >            * Ask the server to close the connection after this request
> > > -          * since we don't read any further request headers.
> > > +          * since we don't read any further request headers, unless
> > > +          * an Upgrade is requested, in which case we do NOT want to add
> > > +          * this header.
> > >            */
> > > -         if (cre->toread == TOREAD_UNLIMITED)
> > > +         if (cre->toread == TOREAD_UNLIMITED && upgrade == NULL)
> > >                   if (kv_add(&desc->http_headers, "Connection",
> > >                       "close", 0) == NULL)
> > >                           goto fail;
Index: relay_http.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relay_http.c,v
retrieving revision 1.80
diff -u -p -u -r1.80 relay_http.c
--- relay_http.c        9 Jan 2021 08:53:58 -0000       1.80
+++ relay_http.c        14 Feb 2021 11:03:12 -0000
@@ -527,7 +527,7 @@ relay_read_http(struct bufferevent *bev,
                 * Ask the server to close the connection after this request
                 * since we don't read any further request headers.
                 */
-               if (cre->toread == TOREAD_UNLIMITED)
+               if (cre->toread == TOREAD_UNLIMITED && upgrade == NULL)
                        if (kv_add(&desc->http_headers, "Connection",
                            "close", 0) == NULL)
                                goto fail;

Reply via email to