[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] suspend/resume patch
From: |
José Bollo |
Subject: |
Re: [libmicrohttpd] suspend/resume patch |
Date: |
Wed, 27 Jul 2016 16:04:02 +0200 |
PING
I still think that the patch is a need.
In src/microhttpd/connection.c
- if ( (MHD_str_equal_caseless_ (end, "close")) ||
- (MHD_str_equal_caseless_ (end, "upgrade")) )
+ if ( (MHD_str_equal_caseless_ (end, "close")) )
Best regards
José Bollo
Le lundi 30 mai 2016 à 07:10 +0200, José Bollo a écrit :
> Le dimanche 29 mai 2016 à 20:53 +0200, Christian Grothoff a écrit :
> >
> > On 05/17/2016 09:53 AM, José Bollo wrote:
> > >
> > >
> > > Le mercredi 20 avril 2016 à 20:41 +0300, Evgeny Grin a écrit :
> > > Please could check again whether the following patch that avoid
> > > to
> > > close the connection when upgrade is called is valid or not.
> > >
> > > diff -Naur a/src/microhttpd/connection.c
> > > b/src/microhttpd/connection.c
> > > --- a/src/microhttpd/connection.c 2016-04-08
> > > 19:02:26.000000000
> > > +0000
> > > +++ b/src/microhttpd/connection.c 2016-04-08
> > > 19:02:26.000000000
> > > +0000
> > > @@ -731,8 +731,7 @@
> > > {
> > > if (NULL == end)
> > > return MHD_YES;
> > > - if ( (MHD_str_equal_caseless_ (end, "close")) ||
> > > - (MHD_str_equal_caseless_ (end, "upgrade")) )
> > > + if ( (MHD_str_equal_caseless_ (end, "close")) )
> > > return MHD_NO;
> > > return MHD_YES;
> > > }
> > Well, as usual the situation isn't quite that simple. As you can
> > see
> > in
> >
> > http://lists.gnu.org/archive/html/libmicrohttpd/2014-12/msg00000.ht
> > ml
> >
> > this case was actually introduced to help Gregory support
> > "upgrade",
> > so
> > now you're asking us to remove to help you support "upgrade".
> > Funny...
> Hello Christian,
>
> Yeap, that's really funny!
>
> I encountered no issue with "Connection: Keep-alive" in the reply
> using
> firefox and chrome. But I encountered the same issue than Dominic
> Froud
> and had to use in the client of MHD a kind of 'strcasestr' when the
> upgrade header had a line like "Connection: Keep-alive, Upgrade"
> (don't
> remember is it chrome or firefox that works that way).
>
> >
> > As discussed in the old threat, the issue is simply more
> > complicated
> > and
> > neither version will fully do; "upgrade" needs more logic in
> > various
> > places, as we need to not generate "Connection: Keep-alive" (as
> > Gregory
> > points out), but also not close the socket.
> My current implementation (that revert SVN 34474) works (*) with
> chrome
> and firefox (versions of today, ask for detail if expected).
>
> I currently have no solution for HTTPS/WSS and I agree that it is an
> issue. As is also an issue the ressource handling. I think that
> offering an interface like beloaw could be enough to make any
> upgrade:
>
> MHD_upgrade(connection, mysetup, mydata);
>
> called in the completion callback when answer is sent, with the
> function mysetup defined like:
>
> struct upgrade_interface {
> int (*set_on_event)(void (*callback)(void
> *, int, MHD_xxx *));
> ssize_t (*writev) (MHD_xxx *, const struct iovec
> *, int);
> ssize_t (*readv) (MHD_xxx *, const struct iovec *, int);
>
> int (*close) (MHD_xxx *);
> int (*resume) (MHD_xxx *);
> };
>
> int mysetup(void *closure, struct upgrade_interface *interface,
> MHD_xxx *handle) ...
>
> and it records using set_on_event a callback to handle incoming
> events
> (data, hangup, starve, ..)
>
> Best regards
> José Bollo
>
> (*) if curious it can be seen there https://github.com/iotbzh/afb-dae
> mo
> n/blob/master/src/afb-websock.c
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [libmicrohttpd] suspend/resume patch,
José Bollo <=