[Libwebsockets] Libwebsocket Upgrade from 1.4

Andy Green andy at warmcat.com
Mon Jul 11 02:44:34 CEST 2016


On Sun, 2016-07-10 at 20:33 -0400, Brice Hamon wrote:
> Great, thanks for the patches Andy.
> 
> Thanks also for the SNI explanation. Correct, I don' t have vhosts as
> I am serving only one domain per server.

OK, in lws terms, you have a single, default vhost with the name
"default".

> In our case, WS servers instances are run from different centers
> (dev, staging, prod) and the same binary is installed everywhere,
> behind load balancers.
> 
> So the program has no way to know which is the external IP client's 

Hm it's not related to "IP", it's hostname.

The hostname also features on the host's SSL cert as identifying it
uniquely.

If you are using SSL in a useful way at all, you must face this
actually, since you chose a hostname to put on the SSL cert.  Then
there is no doubt what the hostname used to reach the server should be,
it's one that matches the one on the cert.

And your clients should check the hostname they reached the server with
(eg, libwebsockets.org) matches the validated cert the server gave
them, or blow chunks.

The usual ways to deal with it are either

 - mess with your local DNS or /etc/hosts to make the temporary IP of
the server match the vhost name

 - use a wildcard cert (*.xxx.com) and define dns for dev.xxx.com,
staging.xxx.com, xxx.com that point to the correct, compatible hosts

> can reach it. Of course I can specifying it at launch time but it's
> am operation's manual procedure I would like to avoid.
> 
> Is there a way to disable this feature?

By default if the incoming SNI name doesn't match any vhost, you are
directed to the first vhost, this is what apache does and we do the
same.

So it will work, but your client should complain that the valid cert he
got (for host "xxx.xxx.com") is from a different host than he went out
to connect to ("192.168.100.100" or whatever you are doing).

-Andy

> Thank you.
> Brice.
> 
> 
> On Sun, Jul 10, 2016 at 7:45 PM, Andy Green <andy at warmcat.com> wrote:
> > On Sun, 2016-07-10 at 10:53 -0400, Brice Hamon wrote:
> > > Victory !
> > >
> > > Got the server to work with 2.0.1.
> > 
> > Great.
> > 
> > > Thanks to Andy and Roger for your advices. 
> > >
> > > Once the code was upgraded to 2.0.1 API calls, the only non-
> > backward
> > > compatibility between 1.6 and 1.7 was in the need to specify the
> > > POLL_ event in both .events and .revents of the lws_pollfd
> > structure.
> > 
> > Right, it's also specific to EXTPOLL.  I pushed a patch on master
> > documenting that in README.coding.md, and -->
> > 
> > > Other than that the upgrade was easy. Pretty good considering I
> > was
> > > many major releases behind.
> > >
> > > Only 2 small things:
> > >
> > > - The lws_pollfd is exported in libwebsocket.h, but the
> > LWS_POLLIN
> > > etc   defines are in private-libwebsockets.h so not accessible. I
> > had
> > > to look what you mapped and set the POLL value directly.
> > 
> > Yes, the patch on master now exports them in libwebsockets.h for
> > use in
> > EXTPOLL-with-event-loop-with-non-poll-semantics case.
> > 
> > > - I am getting a new non critical ERROR log from lws at client's
> > > connection like: SNI: Unknown ServerName: xxx.xxx.com. Seems like
> > I
> > > am not defining something on the SSL side. Any ideas?
> > 
> > SNI is how SSL deals with the situation you may be serving multiple
> > vhosts on one IP, and each vhost may have different SSL certs.  For
> > example lws serves both libwebsockets.org and warmcat.com from one
> > IP,
> > and each vhost has its own SSL cert that can only work on the
> > correct
> > connection.
> > 
> > Lws supports multiple vhosts since v2.0, so when it gets a
> > connection
> > on ssl, before proceeding with setting up the encrypted session it
> > checks the hostname the ssl client sent against the name of all of
> > the
> > vhosts served by the server on the connection's incoming port, so
> > it
> > can bind the connection to the right vhost and the right certs.
> >  (Without SSL, this is done instead by looking at the Host: header,
> > but
> > with SSL, there is a chicken-and-egg problem that the headers
> > cannot be
> > sent until the correct crypto is established, so the hostname is
> > sent
> > first out-of-band using SNI).
> > 
> > For backwards-compatibility if you don't create your own vhosts,
> > one
> > called "default" is created at context-creation time for you, or
> > using
> > .vhost_name from the lws_context_creation_info struct if non-NULL.  
> > So
> > just define this to be "xxx.xxx.com" at context creation time,
> > matching
> > the hostname external clients are using to reach the server.
> > 
> > -Andy
> > 
> > > Thank you,
> > > Brice.
> > >
> > >
> > >
> > >
> > >
> > > On Thu, Jul 7, 2016 at 5:56 PM, Brice Hamon <normandviking at gmail.
> > com>
> > > wrote:
> > > > Arrgh !! :)
> > > >
> > > > Thank you ! I did not think at looking at the ev
> > implementation.
> > > >
> > > > I can see he does set .events and .revents in case of a READ
> > like I
> > > > was trying to work around that check :
> > > >
> > > > eventfd.revents = EV_NONE;
> > > > if (revents & EV_READ) { 
> > > >     eventfd.events |= LWS_POLLIN; 
> > > >     eventfd.revents |= LWS_POLLIN;
> > > > }
> > > >
> > > > I will look into this and report.
> > > >
> > > > Thanks again.
> > > >
> > > >
> > > >
> > > >
> > > > On Thu, Jul 7, 2016 at 5:48 PM, Andy Green <andy at warmcat.com>
> > > > wrote:
> > > > >
> > > > > On July 8, 2016 4:31:54 AM GMT+08:00, Brice Hamon
> > <normandviking@
> > > > > gmail.com> wrote:
> > > > > >Hi Andy,
> > > > > >
> > > > > >Thanks for your response.
> > > > > >
> > > > > >Yes  I do apply your change in your POLL callbacks from the
> > > > > ,events
> > > > > >fields
> > > > > >you give me. And this  has worked nicely.
> > > > > >
> > > > > >I was referring the other way: When I get a READ event on a
> > lws
> > > > > fd, I
> > > > > >have
> > > > > >to notify your lib that this event happens.
> > > > > >
> > > > > >I do that by calling libwebsocket_service_fd() with a "fake"
> > > > > tmpollfd,
> > > > > >in
> > > > > >which I fill the .fd field with the correct file descripto, 
> > and
> > > > > the
> > > > > >.revents field with whatever event I map to a POLL event.
> > > > > >In my READ EVENT, I map to a POLLIN in your poll world.
> > > > > >
> > > > > >My question was is this the correct way to notify you?
> > > > >
> > > > > Oh I see... you can refer to how the built-in support for eg,
> > > > > libev does it, at
> > > > >
> > > > > https://github.com/warmcat/libwebsockets/blob/master/lib/libe
> > v.c#
> > > > > L33
> > > > >
> > > > > he sets his fake pollfd .events = .revents.
> > > > >
> > > > > -Andy
> > > > >
> > > > > >This way used to work prior 1.6 but maybe I am forgetting
> > > > > something
> > > > > >with a
> > > > > >newer version.
> > > > > >
> > > > > >Thanks
> > > > > >Brice.
> > > > > >
> > > > > >On Thu, Jul 7, 2016 at 4:05 PM, Andy Green <andy at warmcat.com
> > >
> > > > > wrote:
> > > > > >
> > > > > >>
> > > > > >>
> > > > > >> On July 8, 2016 3:16:06 AM GMT+08:00, Brice Hamon
> > > > > ><normandviking at gmail.com>
> > > > > >> wrote:
> > > > > >> >Some progress to report.
> > > > > >> >
> > > > > >> >Yes basically my event framework is buid around epoll. I
> > just
> > > > > add
> > > > > >> >remove
> > > > > >> >and modify fd from your callbacks, and when an event
> > occurs
> > > > > on one
> > > > > >of
> > > > > >> >thelws fd, I call lws_service_fd() with a lws_pollargs
> > filled
> > > > > with
> > > > > >the
> > > > > >> >fd
> > > > > >> >and the event mapped to poll() type. This framework has
> > been
> > > > > working
> > > > > >> >with
> > > > > >> >1.4 for 2 years without issue, and is serving all IO
> > events
> > > > > in many
> > > > > >> >other
> > > > > >> >servers.
> > > > > >> >
> > > > > >> >
> > > > > >> >So I looked at the difference between 1.6 and 1.7 on that
> > > > > side.
> > > > > >> >
> > > > > >> >Yes the code has changed quiet a bit as expected.
> > > > > >> >
> > > > > >> >Before the lib was doing only one accept per call call
> > which
> > > > > was
> > > > > >> >incorrect
> > > > > >> >as other accept to be lost in the queue, and on > 1.6
> > there
> > > > > is a
> > > > > >>
> > > > > >> Ehhhh...  if there is still another connection to be
> > processed
> > > > > -
> > > > > >there is
> > > > > >> literally a queue of them held by the OS for each listen
> > > > > socket -
> > > > > >then
> > > > > >> POLLIN for the listen socket will fire again next time
> > round
> > > > > the
> > > > > >event
> > > > > >> loop.  Nothing was ever getting 'lost'.
> > > > > >>
> > > > > >> >while()
> > > > > >> >around accept to not miss any, which is correct
> > processing.
> > > > > >> >
> > > > > >> >And as far as my failing test, indeed, the test for
> > .events 
> > > > > was
> > > > > >added
> > > > > >> >in >
> > > > > >> >1.6
> > > > > >>
> > > > > >> It's part of the ah (allocated_headers) pool stuff,
> > processing
> > > > > an
> > > > > >incoming
> > > > > >> (always initially http) connection must not happen until
> > an ah
> > > > > is
> > > > > >available
> > > > > >> from the pool.  Previously it'd always malloc an ah, but
> > the
> > > > > memory
> > > > > >usage
> > > > > >> for that was very spiky and unpredictable for the case you
> > > > > have tens
> > > > > >of
> > > > > >> thousands of connections coming at once.
> > > > > >>
> > > > > >> >As a try, I filled the .events and .revents with POLLIN
> > when
> > > > > I get a
> > > > > >> >READ
> > > > > >>
> > > > > >> .events is meant to be read-only for you.
> > > > > >>
> > > > > >> >to pass the failing line in server.c and it worked. All
> > the
> > > > > lws
> > > > > >> >callbacks
> > > > > >> >were called and the server was operational.
> > > > > >> >
> > > > > >> >Before I was filling the .revents and I think this was
> > error
> > > > > on my
> > > > > >part
> > > > > >> >a
> > > > > >> >.events in the input parameter.
> > > > > >> >
> > > > > >> >So I am confused as why filling the .events field of the
> > > > > >lws_pollargs
> > > > > >> >alone
> > > > > >> >does not make the library accepting a new connection.
> > > > > >> >
> > > > > >> >Am I missing something?
> > > > > >>
> > > > > >> Yeah the point is lws controls .events, and you report
> > > > > .revents only,
> > > > > >> refer to the operation of poll().  If it has set POLLIN to
> > 0
> > > > > in
> > > > > >.events,
> > > > > >> its meaning is you should have masked your sensitivity to
> > > > > POLLIN
> > > > > >events for
> > > > > >> that socket.  Lws gives you the callback
> > > > > >LWS_CALLBACK_CHANGE_MODE_POLL_FD
> > > > > >> whenever he changes .events on a socket, so that you can
> > echo
> > > > > the
> > > > > >changes
> > > > > >> in your external event loop mask for the socket.  It
> > sounds
> > > > > like you
> > > > > >don't
> > > > > >> process that (or possibly we fail to send it for that case
> > > > > somehow).
> > > > > >>
> > > > > >> It's ok if due to a race between the change to .events
> > > > > disabling an
> > > > > >event
> > > > > >> and the wait processing, one slips through when .events
> > > > > disabled it:
> > > > > >the
> > > > > >> checks in lws will catch it and ignore it.  And when you
> > come
> > > > > back
> > > > > >around
> > > > > >> the event loop, the new mask disabling the events will
> > apply
> > > > > and no
> > > > > >further
> > > > > >> false events should occur.
> > > > > >>
> > > > > >> -Andy
> > > > > >>
> > > > > >> >Thanks
> > > > > >> >Brice.
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> >On Thu, Jul 7, 2016 at 11:18 AM, Andy Green <andy at warmcat
> > .com
> > > > > >
> > > > > >wrote:
> > > > > >> >
> > > > > >> >>
> > > > > >> >>
> > > > > >> >> On July 7, 2016 11:01:56 PM GMT+08:00, Brice Hamon <
> > > > > >> >> normandviking at gmail.com> wrote:
> > > > > >> >> >Hi Andy,
> > > > > >> >> >
> > > > > >> >> >1.7.8 recompiled in debug, with 1 thread.
> > > > > >> >> >
> > > > > >> >> >I traced in the debugger after the READ event on the
> > lws
> > > > > fd.
> > > > > >> >> >
> > > > > >> >> >Although I don't understand your code, it appears that
> > lws
> > > > > does
> > > > > >not
> > > > > >> >> >process
> > > > > >> >> >the event due to the check in line:
> > > > > >> >> >
> > > > > >> >> >server.c line 1011.
> > > > > >> >> >
> > > > > >> >> >as follow:
> > > > > >> >> >
> > > > > >> >> >Breakpoint 2, lws_server_socket_service
> > > > > (context=0x7fffc8001670,
> > > > > >> >> >wsi=0x7fffc8025090, pollfd=0x7fffcfffee10)
> > > > > >> >> >    at
> > > > > >> >>
> > > > > >>
> > > > > >>>/export/home/development/3rdparty/libwebsockets-
> > > > > 1.7.8/lib/server.c:1011
> > > > > >> >> >1011                            if (!(fd-poll>revents
> > &
> > > > > >LWS_POLLIN)
> > > > > >> >||
> > > > > >> >> >!(pollfd->events & LWS_POLLIN))
> > > > > >> >> >(gdb) n
> > > > > >> >> >1062                    return 0;
> > > > > >> >> >(gdb) c
> > > > > >> >> >Continuing.
> > > > > >> >> >16-07-07 10:53:44.656235 INFO : [WEBSOCKET ]:
> > > > > processUserEvent
> > > > > >> >called
> > > > > >> >> >for
> > > > > >> >> >fd=71 ret=0
> > > > > >> >> >
> > > > > >> >> >Breakpoint 2, lws_server_socket_service
> > > > > (context=0x7fffc8001670,
> > > > > >> >> >wsi=0x7fffc8025090, pollfd=0x7fffcfffee10)
> > > > > >> >> >    at
> > > > > >> >>
> > > > > >>
> > > > > >>>/export/home/development/3rdparty/libwebsockets-
> > > > > 1.7.8/lib/server.c:1011
> > > > > >> >> >1011                            if (!(pollfd->revents
> > &
> > > > > >LWS_POLLIN)
> > > > > >> >||
> > > > > >> >> >!(pollfd->events & LWS_POLLIN))
> > > > > >> >> >(gdb) n
> > > > > >> >> >1062                    return 0;
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >(gdb) p *pollfd
> > > > > >> >> >$20 = {fd = 71, events = 0, revents = 1}
> > > > > >> >> >
> > > > > >> >> >So the thread is spinning and the event not consumed.
> > > > > >> >> >
> > > > > >> >> >I do not know why at this point, just wanted to share
> > my
> > > > > early
> > > > > >> >> >findings.
> > > > > >> >> >Any ideas?
> > > > > >> >>
> > > > > >> >> This is what I guessed a couple of emails ago...
> > > > > >> >>
> > > > > >> >> >>> > > If, for example, you report a .revent that
> > actually
> > > > > has no
> > > > > >> >> >.event
> > > > > >> >> >>> > > set, because your event mask at epoll is
> > > > > inconsistent with
> > > > > >> >lws
> > > > > >> >> >>> > > pollfd .event mask, it might spin.  So you
> > should
> > > > > be able
> > > > > >to
> > > > > >> >> >check
> > > > > >> >> >>> > > for that.
> > > > > >> >>
> > > > > >> >> But you seemed to think your code handled it.
> > > > > >> >>
> > > > > >> >> Something seems wrong with how you are keeping your
> > event
> > > > > loop in
> > > > > >> >sync
> > > > > >> >> with pollfd state changes.
> > > > > >> >>
> > > > > >> >> Your code about that follows the extpoll code like the
> > test
> > > > > >server?
> > > > > >> >>
> > > > > >> >>
> > > > > >> >>
> > > > > >> >
> > > > > >>
> > > > > >https://github.com/warmcat/libwebsockets/blob/master/test-se
> > rver
> > > > > /test-server-http.c#L732
> > > > > >> >>
> > > > > >> >> Particularly uses lws_pollargs?
> > > > > >> >>
> > > > > >> >>
> > > > > >> >>
> > > > > >> >
> > > > > >>
> > > > > >https://github.com/warmcat/libwebsockets/blob/master/lib/lib
> > webs
> > > > > ockets.h#L436
> > > > > >> >>
> > > > > >> >> -Andy
> > > > > >> >>
> > > > > >> >> >Thanks
> > > > > >> >> >Brice.
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >
> > > > > >> >> >On Wed, Jul 6, 2016 at 10:41 PM, Brice Hamon
> > > > > >> ><normandviking at gmail.com>
> > > > > >> >> >wrote:
> > > > > >> >> >
> > > > > >> >> >> Thanks Andy,
> > > > > >> >> >>
> > > > > >> >> >> Maybe the event is not consumed in lws due to a
> > state
> > > > > issue,
> > > > > >from
> > > > > >> >an
> > > > > >> >> >> incorrect use of the lib on my side.
> > > > > >> >> >>
> > > > > >> >> >> I'll upgrade to 1.7.8 and debug it tomorrow and
> > report.
> > > > > >> >> >>
> > > > > >> >> >> Brice.
> > > > > >> >> >>
> > > > > >> >> >> On Wed, Jul 6, 2016 at 10:24 PM, Andy Green <andy at wa
> > rmca
> > > > > t.com>
> > > > > >> >wrote:
> > > > > >> >> >>
> > > > > >> >> >>> On Wed, 2016-07-06 at 22:12 -0400, Brice Hamon
> > wrote:
> > > > > >> >> >>> > You're correct Andy, but in my framework, the
> > even is
> > > > > >checked
> > > > > >> >> >before
> > > > > >> >> >>> > calling that method.
> > > > > >> >> >>>
> > > > > >> >> >>> You didn't show that when you pasted the code...
> > > > > >> >> >>>
> > > > > >> >> >>> > The event is READ and I am calling lws on the
> > correct
> > > > > fd.
> > > > > >> >> >>> >
> > > > > >> >> >>> > This spinning is not happening in 1.6 or previous
> > > > > version.
> > > > > >> >> >>>
> > > > > >> >> >>> I wouldn't get too hung up about that as
> > necessarily
> > > > > >meaningful.
> > > > > >> >It
> > > > > >> >> >>> does not happen on any version without your code /
> > > > > external
> > > > > >libev
> > > > > >> >> >>> integration for example.
> > > > > >> >> >>>
> > > > > >> >> >>> You have to debug it and see where it leads.
> > > > > >> >> >>>
> > > > > >> >> >>> > I'll debug this tomorrow and report, but it seems
> > to
> > > > > me that
> > > > > >> >lws
> > > > > >> >> >is
> > > > > >> >> >>> > not triggering a read() of the fd hence the event
> > is
> > > > > not
> > > > > >> >consumed.
> > > > > >> >> >>>
> > > > > >> >> >>> Yes... but why?  And why does lws work with lws own
> > > > > poll(),
> > > > > >libev
> > > > > >> >> >and
> > > > > >> >> >>> libuv support?  One reason could have been the
> > .event
> > > > > not
> > > > > >being
> > > > > >> >> >>> unmasked, but you're ruling that out.
> > > > > >> >> >>>
> > > > > >> >> >>> You'll have to follow it on one of these looping
> > events
> > > > > and
> > > > > >see
> > > > > >> >what
> > > > > >> >> >>> happens inside lws that it doesn't read / accept
> > it.
> > > > > >> >> >>>
> > > > > >> >> >>> I guess this 'read' is signalling that the listen
> > > > > socket has a
> > > > > >> >> >>> connection to accept, you can check it in a
> > debugger by
> > > > > >looking
> > > > > >> >at
> > > > > >> >> >wsi-
> > > > > >> >> >>> >listener.
> > > > > >> >> >>>
> > > > > >> >> >>> Also... 1.7.0 had its share of bugs, the stable
> > branch
> > > > > for it
> > > > > >is
> > > > > >> >at
> > > > > >> >> >>> 1.7.8 and you should better use that.  I don't
> > recall
> > > > > anything
> > > > > >> >like
> > > > > >> >> >>> this though, and you mention the problem still
> > coming
> > > > > on
> > > > > >master.
> > > > > >> >> >>>
> > > > > >> >> >>> -Andy
> > > > > >> >> >>>
> > > > > >> >> >>>
> > > > > >> >> >>> > On Wed, Jul 6, 2016 at 2:04 PM, Andy Green
> > > > > ><andy at warmcat.com>
> > > > > >> >> >wrote:
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > On July 7, 2016 1:27:28 AM GMT+08:00, Brice
> > Hamon
> > > > > >> >> ><normandviking at gm
> > > > > >> >> >>> > > ail.com> wrote:
> > > > > >> >> >>> > > >More findings:
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >Once the client connects to my server, I am
> > > > > spinning in
> > > > > >the
> > > > > >> >fd
> > > > > >> >> >>> > > >notification
> > > > > >> >> >>> > > >callback from my epoll mecanism, from which I
> > call
> > > > > lws.
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > That sounds more like you're getting closer to
> > the
> > > > > actual
> > > > > >> >issue.
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > >    pollfd tmpollfd;
> > > > > >> >> >>> > > >    memset(&tmpollfd, 0, sizeof(tmpollfd));
> > > > > >> >> >>> > > >    tmpollfd.fd = fd;
> > > > > >> >> >>> > > >    tmpollfd.revents = 0;
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >    if (event & EVENT_READ ||  event &
> > > > > EVENT_READ_PRI)
> > > > > >> >> >>> > > >        tmpollfd.revents |= POLLIN;
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >    if (event & EVENT_CLOSE)
> > > > > >> >> >>> > > >        tmpollfd.revents |= POLLRDHUP;
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >    if(event & EVENT_ERROR)
> > > > > >> >> >>> > > >        tmpollfd.revents |= POLLRDHUP ;
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >    if (event & EVENT_WRITE)
> > > > > >> >> >>> > > >        tmpollfd.revents |= POLLOUT;
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > So which event is it spinning on?  Gdb and step
> > > > > what
> > > > > >happens
> > > > > >> >> >might
> > > > > >> >> >>> > > shine some light.
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > If, for example, you report a .revent that
> > actually
> > > > > has no
> > > > > >> >> >.event
> > > > > >> >> >>> > > set, because your event mask at epoll is
> > > > > inconsistent with
> > > > > >> >lws
> > > > > >> >> >>> > > pollfd .event mask, it might spin.  So you
> > should
> > > > > be able
> > > > > >to
> > > > > >> >> >check
> > > > > >> >> >>> > > for that.
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > -Andy
> > > > > >> >> >>> > >
> > > > > >> >> >>> > > >    return libwebsocket_service_fd(context_,
> > > > > &tmpollfd);
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >I check and libwebsocket_service_fd() returns
> > 0.
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >This code is untouched from 1.4 version.
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >Thanks.
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >On Wed, Jul 6, 2016 at 9:02 AM, Brice Hamon
> > > > > >> >> ><normandviking at gmail.c
> > > > > >> >> >>> > > om>
> > > > > >> >> >>> > > >wrote:
> > > > > >> >> >>> > > >
> > > > > >> >> >>> > > >> Hi Andy,
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> Yes only one is running. I check with
> > netstat. I
> > > > > >> >recompiled
> > > > > >> >> >lws
> > > > > >> >> >>> > > with
> > > > > >> >> >>> > > >> -DLWS_MAX_SMP=1.
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> No change, the problem is still there.
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> I believe that the problem is in the
> > server's
> > > > > side as
> > > > > >the
> > > > > >> >lws
> > > > > >> >> >>> > > test
> > > > > >> >> >>> > > >client
> > > > > >> >> >>> > > >> and the browser failed to establish a WS
> > > > > connection. At
> > > > > >> >least
> > > > > >> >> >I
> > > > > >> >> >>> > > now
> > > > > >> >> >>> > > >know it
> > > > > >> >> >>> > > >> is not SSL related.
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> I will now investigate the server side and
> > > > > report back.
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> If you think at something obvious in the way
> > 1.7
> > > > > server
> > > > > >> >side
> > > > > >> >> >>> > > works
> > > > > >> >> >>> > > >versus
> > > > > >> >> >>> > > >> 1.6, please let me know.
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> Thanks
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >> On Tue, Jul 5, 2016 at 11:50 PM, Andy Green
> > > > > >> >> ><andy at warmcat.com>
> > > > > >> >> >>> > > wrote:
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >>> On Tue, 2016-07-05 at 23:08 -0400, Brice
> > Hamon
> > > > > wrote:
> > > > > >> >> >>> > > >>> > Yes I did not wait for 20 seconds to
> > timeout
> > > > > the
> > > > > >first
> > > > > >> >> >time.
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > I attached the tcp dump for that port
> > taken
> > > > > from the
> > > > > >> >> >client
> > > > > >> >> >>> > > >machine.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> Clearly the client thinks he sends the
> > upgrade
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> 22:56:37.579369 IP
> > bs1.blueskysystem.net.46119
> > > > > >
> > > > > >> >> >>> > > >>> bs2.blueskysystem.net.7682: Flags [P.], seq
> > > > > 1:293, ack
> > > > > >1,
> > > > > >> >> >win
> > > > > >> >> >>> > > 229,
> > > > > >> >> >>> > > >>> options [nop,nop,TS val 1553449881 ecr
> > > > > 1553345730],
> > > > > >> >length
> > > > > >> >> >292
> > > > > >> >> >>> > > >>>         0x0000:  4500 0158 e634 4000 4006
> > ce87
> > > > > c0a8
> > > > > >> >> >>> > > >>> 01c9  E..X.4 at .@.......
> > > > > >> >> >>> > > >>>         0x0010:  c0a8 01ca b427 1e02 428c
> > 25ab
> > > > > 7144
> > > > > >> >> >>> > > >>> 4265  .....'..B.%.qDBe
> > > > > >> >> >>> > > >>>         0x0020:  8018 00e5 b057 0000 0101
> > 080a
> > > > > 5c97
> > > > > >> >> >>> > > >>> c399  .....W......\...
> > > > > >> >> >>> > > >>>         0x0030:  5c96 2cc2 4745 5420 2f20
> > 4854
> > > > > 5450
> > > > > >> >> >>> > > >>> 2f31  \.,.GET./.HTTP/1
> > > > > >> >> >>> > > >>>         0x0040:  2e31 0d0a 5072 6167 6d61
> > 3a20
> > > > > 6e6f
> > > > > >> >> >>> > > >>> 2d63  .1..Pragma:.no-c
> > > > > >> >> >>> > > >>>         0x0050:  6163 6865 0d0a 4361 6368
> > 652d
> > > > > 436f
> > > > > >6e74
> > > > > >> >> >>> > > >ache..Cache-
> > > > > >> >> >>> > > >>> Cont
> > > > > >> >> >>> > > >>>         0x0060:  726f 6c3a 206e 6f2d 6361
> > 6368
> > > > > 650d
> > > > > >0a48
> > > > > >> >> >>> > > rol:.no-
> > > > > >> >> >>> > > >>> cache..H
> > > > > >> >> >>> > > >>>         0x0070:  6f73 743a 2031 3932 2e31
> > 3638
> > > > > 2e31
> > > > > >> >> >>> > > >>> 2e32  ost:.192.168.1.2
> > > > > >> >> >>> > > >>>         0x0080:  3032 0d0a 5570 6772 6164
> > 653a
> > > > > 2077
> > > > > >> >> >>> > > >>> 6562  02..Upgrade:.web
> > > > > >> >> >>> > > >>>         0x0090:  736f 636b 6574 0d0a 436f
> > 6e6e
> > > > > 6563
> > > > > >> >> >>> > > >>> 7469  socket..Connecti
> > > > > >> >> >>> > > >>>         0x00a0:  6f6e 3a20 5570 6772 6164
> > 650d
> > > > > 0a53
> > > > > >> >> >>> > > >>> 6563  on:.Upgrade..Sec
> > > > > >> >> >>> > > >>>         0x00b0:  2d57 6562 536f 636b 6574
> > 2d4b
> > > > > 6579
> > > > > >3a20
> > > > > >> >> >>> > > >-WebSocket-
> > > > > >> >> >>> > > >>> Key:.
> > > > > >> >> >>> > > >>>         0x00c0:  2f4a 5748 7668 3976 5052
> > 336e
> > > > > 5675
> > > > > >> >> >>> > > >>> 5267  /JWHvh9vPR3nVuRg
> > > > > >> >> >>> > > >>>         0x00d0:  2f62 5554 5a77 3d3d 0d0a
> > 4f72
> > > > > 6967
> > > > > >> >> >>> > > >>> 696e  /bUTZw==..Origin
> > > > > >> >> >>> > > >>>         0x00e0:  3a20 6874 7470 3a2f 2f31
> > 3932
> > > > > 2e31
> > > > > >3638
> > > > > >> >> >>> > > >:.http://192.
> > > > > >> >> >>> > > >>> 168
> > > > > >> >> >>> > > >>>         0x00f0:  2e31 2e32 3032 0d0a 5365
> > 632d
> > > > > 5765
> > > > > >6253
> > > > > >> >> >>> > > >.1.202..Sec-
> > > > > >> >> >>> > > >>> WebS
> > > > > >> >> >>> > > >>>         0x0100:  6f63 6b65 742d 5072 6f74
> > 6f63
> > > > > 6f6c
> > > > > >3a20
> > > > > >> >> >>> > > ocket-
> > > > > >> >> >>> > > >>> Protocol:.
> > > > > >> >> >>> > > >>>         0x0110:  6273 7773 2d70 726f 746f
> > 636f
> > > > > 6c0d
> > > > > >0a53
> > > > > >> >> >bsws-
> > > > > >> >> >>> > > >>> protocol..S
> > > > > >> >> >>> > > >>>         0x0120:  6563 2d57 6562 536f 636b
> > 6574
> > > > > 2d45
> > > > > >7874
> > > > > >> >> >>> > > >ec-WebSocket-
> > > > > >> >> >>> > > >>> Ext
> > > > > >> >> >>> > > >>>         0x0130:  656e 7369 6f6e 733a 200d
> > 0a53
> > > > > 6563
> > > > > >> >> >>> > > >>> 2d57  ensions:...Sec-W
> > > > > >> >> >>> > > >>>         0x0140:  6562 536f 636b 6574 2d56
> > 6572
> > > > > 7369
> > > > > >6f6e
> > > > > >> >> >>> > > ebSocket-
> > > > > >> >> >>> > > >>> Version
> > > > > >> >> >>> > > >>>         0x0150:  3a20 3133 0d0a 0d0a
> > > > > >> >> >>> > > :.13....
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> > Yes this server is a lws server.
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > I don't get much on the server side:
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.519960 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >Initial
> > > > > >> >> >>> > > >>> > logging level 65535
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.519981 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > Libwebsockets version: 1.7.0 ac4b079
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.519988 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > IPV6
> > > > > >> >> >>> > > >not
> > > > > >> >> >>> > > >>> > compiled in
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520012 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > libev
> > > > > >> >> >>> > > >>> > support not compiled in
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520021 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  LWS_DEF_HEADER_LEN    : 1024
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520027 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  LWS_MAX_PROTOCOLS     : 5
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520041 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  LWS_MAX_SMP           : 32
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520049 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  SPEC_LATEST_SUPPORTED : 13
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520055 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >sizeof
> > > > > >> >> >>> > > >>> > (*info)        : 216
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520061 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  SYSTEM_RANDOM_FILEPATH: '/dev/urandom'
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520166 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >default
> > > > > >> >> >>> > > >>> > timeout (secs): 20
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520213 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >Threads:
> > > > > >> >> >>> > > >>> > 1 each 1024 fds
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520223 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > mem:
> > > > > >> >> >>> > > >>> > context:          9800 bytes (5704 ctx +
> > (1
> > > > > thr x
> > > > > >> >4096))
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520251 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > mem:
> > > > > >> >> >>> > > >>> > http hdr rsvd:    4232 bytes (1 thr x
> > (1024 +
> > > > > 3208)
> > > > > >x
> > > > > >> >1))
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520276 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > mem:
> > > > > >> >> >>> > > >>> > pollfd map:       8192
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520310 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > mem:
> > > > > >> >> >>> > > >>> > platform fd map:  8192 bytes
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520406 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  LWS_MAX_EXTENSIONS_ACTIVE: 2
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520418 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > mem:
> > > > > >> >> >>> > > >>> > per-conn:          376 bytes + protocol
> > rx
> > > > > buf
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520501 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >Compiled
> > > > > >> >> >>> > > >>> > with OpenSSL support
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.520509 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > Using
> > > > > >> >> >>> > > >>> > non-SSL mode
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529082 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  interface lo vs eth0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529128 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  interface eth0 vs eth0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529136 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  interface eth1 vs eth0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529147 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  interface lo vs eth0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529153 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  interface eth0 vs eth0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529247 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > insert_wsi_socket_into_fds:
> > 0x7fad98026450:
> > > > > tsi=0,
> > > > > >> >> >sock=71,
> > > > > >> >> >>> > > >pos-in-
> > > > > >> >> >>> > > >>> > fds=1
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529278 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_LOCK_POLL fd=71
> > > > > context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529302 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_ADD_POLL_FD fd=71
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=0
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529376 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_UNLOCK_POLL fd=71
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=1
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529453 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> >  Listening on port 7682
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529470 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_PROTOCOL_INIT fd=0
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=0
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529475 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http:
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_PROTOCOL_INIT
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529520 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_bsws
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_PROTOCOL_INIT
> > wsi=0x7fada6ffcbb0
> > > > > >> >> >>> > > >context=0x7fad98003e80
> > > > > >> >> >>> > > >>> > pss=(nil)
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.529617 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >>> > > BSThread::onRunning
> > > > > >> >> >>> > > >>> > called
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:00.719556 INFO :
> > [BSWEBHTTP ]:
> > > > > >Start():
> > > > > >> >> >THREAD
> > > > > >> >> >>> > > >>> > WebSocket started.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> He doesn't seem to feel he received any
> > connect
> > > > > on his
> > > > > >> >> >>> > > listening
> > > > > >> >> >>> > > >>> socket.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> If it possible you have another lws server
> > > > > running on
> > > > > >> >7682?
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> 1.7 introduced using SO_REUSEPORT for
> > listening
> > > > > >sockets
> > > > > >> >when
> > > > > >> >> >>> > > you
> > > > > >> >> >>> > > >have
> > > > > >> >> >>> > > >>> LWS_MAX_SMP > 1, each thread opens his own
> > > > > listening
> > > > > >> >socket
> > > > > >> >> >and
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >>> load is shared between them by the OS
> > without
> > > > > >conflict.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> A side effect of that is even if another
> > > > > process has a
> > > > > >> >> >>> > > listening
> > > > > >> >> >>> > > >socket
> > > > > >> >> >>> > > >>> on 7682, creating the new listening socket
> > will
> > > > > >succeed.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> I wonder if you have another instance still
> > > > > running
> > > > > >> >> >somewhere
> > > > > >> >> >>> > > >listening
> > > > > >> >> >>> > > >>> on 7682 that gets the accept.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> I notice LWS_MAX_SMP is 32 for you, how
> > about
> > > > > setting
> > > > > >> >that
> > > > > >> >> >to 1
> > > > > >> >> >>> > > >(cmake
> > > > > >> >> >>> > > >>> .. -DLWS_MAX_SMP=1 ) if you are not using
> > > > > multiple
> > > > > >> >service
> > > > > >> >> >>> > > threads.
> > > > > >> >> >>> > > >>>  That will disable SO_REUSEPORT.
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> -Andy
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > and when I exit:
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.379324 INFO :
> > [BSWEBHTTP ]:
> > > > > >> >> >BSEventMgr::run
> > > > > >> >> >>> > > >Leaving
> > > > > >> >> >>> > > >>> > mainloop. Thread exiting
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.379780 INFO :
> > [BSWEBHTTP ]:
> > > > > >Stopping
> > > > > >> >the
> > > > > >> >> >>> > > >WebSocket
> > > > > >> >> >>> > > >>> > Thread...
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380160 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >BSEventMgr::run
> > > > > >> >> >>> > > >Leaving
> > > > > >> >> >>> > > >>> > mainloop. Thread exiting
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380302 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > lws_context_destroy
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380315 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > lws_close_free_wsi: real
> > > > > just_kill_connection:
> > > > > >> >> >0x7fad98026450
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380333 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_LOCK_POLL fd=71
> > > > > context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380346 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > remove_wsi_socket_from_fds:
> > > > > wsi=0x7fad98026450,
> > > > > >> >sock=71,
> > > > > >> >> >fds
> > > > > >> >> >>> > > >pos=1,
> > > > > >> >> >>> > > >>> > end guy pos=2, endfd=0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380361 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_DEL_POLL_FD fd=71
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=0
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380389 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_UNLOCK_POLL fd=71
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=1
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380398 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > not
> > > > > >> >> >>> > > >>> > calling back closed mode=16 state=0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380553 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_WSI_DESTROY fd=-1
> > > > > >context=0x7fad98003e80
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > len=0
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380573 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >> >libwebsocket:
> > > > > >> >> >>> > > >>> > lws_free_wsi: 0x7fad98026450, remaining
> > wsi 0
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380602 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_http
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_PROTOCOL_DESTROY fd=0
> > > > > >> >context=0x7fad98003e80
> > > > > >> >> >>> > > >user=[NULL]
> > > > > >> >> >>> > > >>> > len=0
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.380612 INFO :
> > [WEBSOCKET ]:
> > > > > >> >> >callback_bsws
> > > > > >> >> >>> > > >>> > LWS_CALLBACK_PROTOCOL_DESTROY
> > > > > wsi=0x7fada6ffccc0
> > > > > >> >> >>> > > >>> > context=0x7fad98003e80 pss=(nil)
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.381734 DEBUG:
> > [WEBSOCKET ]:
> > > > > >> >BSThread::
> > > > > >> >> >>> > > >[WEBSOCKET]
> > > > > >> >> >>> > > >>> > Mainloop done. Bye.
> > > > > >> >> >>> > > >>> > 16-07-05 23:05:17.382136 INFO :
> > [BSWEBHTTP ]:
> > > > > >WebSocket
> > > > > >> >> >>> > > Thread
> > > > > >> >> >>> > > >>> > stopped.
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > Thanks,
> > > > > >> >> >>> > > >>> > Brice.
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>> > On Tue, Jul 5, 2016 at 5:56 PM, Andy
> > Green
> > > > > >> >> ><andy at warmcat.com>
> > > > > >> >> >>> > > >wrote:
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > > On July 6, 2016 5:44:26 AM GMT+08:00,
> > Brice
> > > > > Hamon
> > > > > >> >> >>> > > ><normandviking at gm
> > > > > >> >> >>> > > >>> > > ail.com> wrote:
> > > > > >> >> >>> > > >>> > > >HI Andy,
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >I had to change the test client to add
> > my
> > > > > own
> > > > > >> >protocol
> > > > > >> >> >>> > > name in
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > >request
> > > > > >> >> >>> > > >>> > > >as my server only speaks that
> > protocol.
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >That client also used to work with
> > prior
> > > > > version.
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >Also I could disable the SSL support
> > on
> > > > > both ends
> > > > > >> >and
> > > > > >> >> >the
> > > > > >> >> >>> > > >problem
> > > > > >> >> >>> > > >>> > > still
> > > > > >> >> >>> > > >>> > > >persisted. So I concluded that this is
> > not
> > > > > a SSL
> > > > > >> >> >problem.
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >Yes Andy, the connection request
> > > > > eventually
> > > > > >timeout
> > > > > >> >> >like
> > > > > >> >> >>> > > this:
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >aiting for connect...
> > > > > >> >> >>> > > >>> > > >[1467754420:5046] CLIENT:
> > > > > lws_client_connect_2
> > > > > >> >> >>> > > >>> > > >[1467754420:5047] CLIENT:
> > > > > lws_client_connect_2:
> > > > > >> >address
> > > > > >> >> >>> > > >>> > > 192.168.1.202
> > > > > >> >> >>> > > >>> > > >[1467754420:5047] CLIENT: connected
> > > > > >> >> >>> > > >>> > > >callback_bsws [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >user=[NULL]
> > > > > >> >> >>> > > len=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > > > > [LWS_CALLBACK_CHANGE_MODE_POLL_FD]
> > > > > >> >fd=6
> > > > > >> >> >>> > > >user=[NULL]
> > > > > >> >> >>> > > >>> > > len=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > [LWS_CALLBACK_UNLOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > len=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > > > > >> >> >>> > > [LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER]
> > > > > >> >> >>> > > >fd=6
> > > > > >> >> >>> > > >>> > > >user=[NULL] len=3794
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > > Hmm this is also different than what
> > you
> > > > > said
> > > > > >before,
> > > > > >> >> >it's
> > > > > >> >> >>> > > >creating
> > > > > >> >> >>> > > >>> > > the upgrade request without the peer
> > > > > closing,
> > > > > >which
> > > > > >> >is
> > > > > >> >> >more
> > > > > >> >> >>> > > >>> > > reasonable.
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > > Check with tcpdump -s0 -X what happens
> > on
> > > > > the
> > > > > >wire.
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > > What is this server?  Also lws?  Get
> > some
> > > > > logs on
> > > > > >> >that
> > > > > >> >> >as
> > > > > >> >> >>> > > well
> > > > > >> >> >>> > > >if
> > > > > >> >> >>> > > >>> > > tcpdump shows it sent the upgrade.
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > > -Andy
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >[1467754441:5268] NOTICE: wsi
> > 0xbea580:
> > > > > TIMEDOUT
> > > > > >> >> >WAITING
> > > > > >> >> >>> > > on 4
> > > > > >> >> >>> > > >(did
> > > > > >> >> >>> > > >>> > > hdr
> > > > > >> >> >>> > > >>> > > >0,
> > > > > >> >> >>> > > >>> > > >ah 0xbba730, wl 0, pfd events 0)
> > > > > >> >> >>> > > >>> > > >[1467754441:5268] ERR: *** not on ah
> > wait
> > > > > list
> > > > > >***
> > > > > >> >> >>> > > >>> > > >[1467754441:5268] INFO:
> > > > > lws_close_free_wsi: real
> > > > > >> >> >>> > > >>> > > just_kill_connection:
> > > > > >> >> >>> > > >>> > > >0xbea580
> > > > > >> >> >>> > > >>> > > >callback_bsws [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >user=[NULL]
> > > > > >> >> >>> > > len=1
> > > > > >> >> >>> > > >>> > > >[1467754441:5269] INFO:
> > > > > >remove_wsi_socket_from_fds:
> > > > > >> >> >>> > > >wsi=0xbea580,
> > > > > >> >> >>> > > >>> > > >sock=6,
> > > > > >> >> >>> > > >>> > > >fds pos=1, end guy pos=2, endfd=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > [LWS_CALLBACK_DEL_POLL_FD]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > len=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > [LWS_CALLBACK_UNLOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > len=1
> > > > > >> >> >>> > > >>> > > >[1467754441:5269] DEBUG: Connection
> > closed
> > > > > before
> > > > > >> >> >server
> > > > > >> >> >>> > > reply
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > > > > >[LWS_CALLBACK_CLIENT_CONNECTION_ERROR]
> > > > > >> >> >fd=6
> > > > > >> >> >>> > > >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >callback_bsws
> > [LWS_CALLBACK_WSI_DESTROY]
> > > > > fd=-1
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >[1467754441:5270] INFO:
> > > > > lws_header_table_detach:
> > > > > >wsi
> > > > > >> >> >>> > > 0xbea580:
> > > > > >> >> >>> > > >ah
> > > > > >> >> >>> > > >>> > > >0xbba730
> > > > > >> >> >>> > > >>> > > >(tsi=0, count = 1)
> > > > > >> >> >>> > > >>> > > >[1467754441:5270] ERR: header assign -
> > > > > free time
> > > > > >21
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >It seems like after the
> > > > > >> >> >>> > > >>> > >
> > > > > LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER,
> > > > > >> >> >>> > > >>> > > >nothing happens.
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >On Tue, Jul 5, 2016 at 5:26 PM, Andy
> > Green
> > > > > >> >> ><andy at warmcat.c
> > > > > >> >> >>> > > om>
> > > > > >> >> >>> > > >>> > > wrote:
> > > > > >> >> >>> > > >>> > > >
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> On July 6, 2016 4:28:03 AM
> > GMT+08:00,
> > > > > Brice
> > > > > >Hamon
> > > > > >> >> >>> > > >>> > > ><normandviking at gmail.com>
> > > > > >> >> >>> > > >>> > > >> wrote:
> > > > > >> >> >>> > > >>> > > >> >Thanks Roger,
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >I'll look into it if I am unable to
> > > > > find the
> > > > > >root
> > > > > >> >> >cause
> > > > > >> >> >>> > > >>> > > otherwise.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> Git bisect is a good idea and the
> > lws
> > > > > history
> > > > > >is
> > > > > >> >> >almost
> > > > > >> >> >>> > > >always
> > > > > >> >> >>> > > >>> > > >buildable
> > > > > >> >> >>> > > >>> > > >> at any commit.  I thought it might
> > be
> > > > > quicker
> > > > > >to
> > > > > >> >pull
> > > > > >> >> >on
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >>> > > symptom
> > > > > >> >> >>> > > >>> > > >end
> > > > > >> >> >>> > > >>> > > >> but maybe not.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >A little bit of progress.
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >1) The test server and client do
> > work
> > > > > on my
> > > > > >> >> >platform.
> > > > > >> >> >>> > > So the
> > > > > >> >> >>> > > >>> > > problem
> > > > > >> >> >>> > > >>> > > >is
> > > > > >> >> >>> > > >>> > > >> >in
> > > > > >> >> >>> > > >>> > > >> >my code somewhere.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> Too early to say, since we don't
> > know
> > > > > what the
> > > > > >> >> >problem
> > > > > >> >> >>> > > is.
> > > > > >> >> >>> > > >But
> > > > > >> >> >>> > > >>> > > it
> > > > > >> >> >>> > > >>> > > >means
> > > > > >> >> >>> > > >>> > > >> your toolchain + platform + lws
> > version
> > > > > can
> > > > > >> >basically
> > > > > >> >> >>> > > work if
> > > > > >> >> >>> > > >it
> > > > > >> >> >>> > > >>> > > does
> > > > > >> >> >>> > > >>> > > >what
> > > > > >> >> >>> > > >>> > > >> the test apps do.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >2) I changed the client's test
> > program
> > > > > and now
> > > > > >I
> > > > > >> >can
> > > > > >> >> >>> > > see
> > > > > >> >> >>> > > >that
> > > > > >> >> >>> > > >>> > > the
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> What does it mean "changed the
> > client's
> > > > > test
> > > > > >> >> >program"?
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >client
> > > > > >> >> >>> > > >>> > > >> >get connected to the server, but
> > > > > nothing after
> > > > > >> >that.
> > > > > >> >> >>> > > >>> > > >> >That rules out a network transport
> > > > > problem.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> It just means "'connection refused"
> > was
> > > > > bogus.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >libwebsockets test client
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >SSL Usage: Yes
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5381] NOTICE: Initial
> > > > > logging
> > > > > >level
> > > > > >> >> >65535
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5382] NOTICE:
> > Libwebsockets
> > > > > >version:
> > > > > >> >> >1.7.0
> > > > > >> >> >>> > > >ac4b079
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5382] NOTICE: IPV6 not
> > > > > compiled in
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5383] NOTICE: libev
> > support
> > > > > not
> > > > > >> >compiled
> > > > > >> >> >in
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5383] INFO: 
> > > > > LWS_DEF_HEADER_LEN
> > > > > >:
> > > > > >> >> >1024
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5383] INFO: 
> > > > > LWS_MAX_PROTOCOLS
> > > > > >:
> > > > > >> >5
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5384] INFO: 
> > LWS_MAX_SMP
> > > > > >:
> > > > > >> >32
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> This defaults to 1 on later lws
> > anyway,
> > > > > but
> > > > > >it's
> > > > > >> >> >likely
> > > > > >> >> >>> > > >>> > > unrelated if
> > > > > >> >> >>> > > >>> > > >the
> > > > > >> >> >>> > > >>> > > >> test apps are ok.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5384] INFO: 
> > > > > SPEC_LATEST_SUPPORTED
> > > > > >:
> > > > > >> >13
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5384] INFO:  sizeof
> > (*info)
> > > > > >:
> > > > > >> >216
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5385] INFO:
> > > > > >SYSTEM_RANDOM_FILEPATH:
> > > > > >> >> >>> > > >'/dev/urandom'
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5385] INFO:  default
> > > > > timeout
> > > > > >(secs):
> > > > > >> >20
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5386] NOTICE:  Threads:
> > 1
> > > > > each
> > > > > >1024
> > > > > >> >fds
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5387] INFO:  mem:
> > context:
> > > > > >> >9800
> > > > > >> >> >>> > > bytes
> > > > > >> >> >>> > > >>> > > (5704 ctx
> > > > > >> >> >>> > > >>> > > >+
> > > > > >> >> >>> > > >>> > > >> >(1
> > > > > >> >> >>> > > >>> > > >> >thr x 4096))
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5387] INFO:  mem: http
> > hdr
> > > > > rsvd:
> > > > > >> >67712
> > > > > >> >> >>> > > bytes
> > > > > >> >> >>> > > >(1
> > > > > >> >> >>> > > >>> > > thr x
> > > > > >> >> >>> > > >>> > > >> >(1024 +
> > > > > >> >> >>> > > >>> > > >> >3208) x 16))
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5388] INFO:  mem:
> > pollfd
> > > > > map:
> > > > > >> >8192
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5388] NOTICE:  mem:
> > > > > platform fd
> > > > > >map:
> > > > > >> >> >8192
> > > > > >> >> >>> > > bytes
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5389] INFO:
> > > > > >> >LWS_MAX_EXTENSIONS_ACTIVE:
> > > > > >> >> >2
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5389] NOTICE:  mem:
> > per-
> > > > > conn:
> > > > > >> >> >376
> > > > > >> >> >>> > > bytes
> > > > > >> >> >>> > > >+
> > > > > >> >> >>> > > >>> > > >protocol
> > > > > >> >> >>> > > >>> > > >> >rx
> > > > > >> >> >>> > > >>> > > >> >buf
> > > > > >> >> >>> > > >>> > > >> >[1467750112:5390] NOTICE: 
> > > > > canonical_hostname
> > > > > >=
> > > > > >> >bs1
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >> >> >>> > > >>> > >
> > > > > >[LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS]
> > > > > >> >> >>> > > >>> > > >> >fd=0
> > > > > >> >> >>> > > >>> > > >> >user=[�`ơ#] len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_PROTOCOL_INIT]
> > > > > >fd=0
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >[LWS_CALLBACK_CHANGE_MODE_POLL_FD]
> > > > > >> >> >fd=-1
> > > > > >> >> >>> > > >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > >> >len=0
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]:
> > > > > lws_client_connect:
> > > > > >> >direct
> > > > > >> >> >conn
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]:
> > > > > lws_client_connect_2
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]:
> > > > > lws_client_connect_2:
> > > > > >> >> >address
> > > > > >> >> >>> > > >>> > > 192.168.1.202
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_ADD_POLL_FD] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_UNLOCK_POLL] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]: nonblocking
> > > > > connect
> > > > > >retry
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >[LWS_CALLBACK_CHANGE_MODE_POLL_FD]
> > > > > >> >> >fd=6
> > > > > >> >> >>> > > >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_UNLOCK_POLL] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >Waiting for connect...
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]:
> > > > > lws_client_connect_2
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]:
> > > > > lws_client_connect_2:
> > > > > >> >> >address
> > > > > >> >> >>> > > >>> > > 192.168.1.202
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >libbswslog: [LOG_INFO]: connected
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> Hm.  "Connection refused" was a red
> > > > > herring
> > > > > >then,
> > > > > >> >> >it's
> > > > > >> >> >>> > > not
> > > > > >> >> >>> > > >>> > > refused
> > > > > >> >> >>> > > >>> > > >and
> > > > > >> >> >>> > > >>> > > >> does connect.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >Then when I kill the server:
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >[LWS_CALLBACK_CHANGE_MODE_POLL_FD]
> > > > > >> >> >fd=6
> > > > > >> >> >>> > > >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_UNLOCK_POLL] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >> >> >>> > > [LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER]
> > > > > >> >> >>> > > >>> > > fd=6
> > > > > >> >> >>> > > >>> > > >> >user=[NULL] len=3794
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> This comes when the client is
> > creating
> > > > > his
> > > > > >upgrade
> > > > > >> >> >>> > > request to
> > > > > >> >> >>> > > >>> > > use ws
> > > > > >> >> >>> > > >>> > > >> instead of http.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> But that should be sequenced
> > > > > automatically to
> > > > > >be
> > > > > >> >done
> > > > > >> >> >>> > > after
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > >connect
> > > > > >> >> >>> > > >>> > > >> state, not happen when the peer
> > died.
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> What is the situation with this
> > > > > "changed" test
> > > > > >> >client
> > > > > >> >> >>> > > about
> > > > > >> >> >>> > > >it
> > > > > >> >> >>> > > >>> > > >getting
> > > > > >> >> >>> > > >>> > > >> service?
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> -Andy
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >[LWS_CALLBACK_CHANGE_MODE_POLL_FD]
> > > > > >> >> >fd=6
> > > > > >> >> >>> > > >>> > > user=[NULL]
> > > > > >> >> >>> > > >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_UNLOCK_POLL] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > >> >> >>> > > [LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER]
> > > > > >> >> >>> > > >>> > > fd=6
> > > > > >> >> >>> > > >>> > > >> >user=[NULL] len=3794
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > [LWS_CALLBACK_LOCK_POLL]
> > > > > fd=6
> > > > > >> >> >user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_DEL_POLL_FD] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_UNLOCK_POLL] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=1
> > > > > >> >> >>> > > >>> > > >> >callback_bsws
> > > > > [LWS_CALLBACK_WSI_DESTROY] fd=6
> > > > > >> >> >>> > > user=[NULL]
> > > > > >> >> >>> > > >len=0
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >Thanks guys.
> > > > > >> >> >>> > > >>> > > >> >Brice.
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >On Tue, Jul 5, 2016 at 3:47 PM,
> > Roger
> > > > > Light
> > > > > >> >> >>> > > ><roger at atchoo.org>
> > > > > >> >> >>> > > >>> > > >wrote:
> > > > > >> >> >>> > > >>> > > >> >
> > > > > >> >> >>> > > >>> > > >> >> Hi Brice,
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> If you've got a working and a
> > non-
> > > > > working
> > > > > >> >version,
> > > > > >> >> >>> > > then a
> > > > > >> >> >>> > > >>> > > good
> > > > > >> >> >>> > > >>> > > >option
> > > > > >> >> >>> > > >>> > > >> >> is to use "git bisect" to find
> > the
> > > > > problem
> > > > > >> >commit.
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> git clone
> > > > > >> >https://github.com/warmcat/libwebsockets
> > > > > >> >> >>> > > >lws-bisect
> > > > > >> >> >>> > > >>> > > >> >> cd lws-bisect
> > > > > >> >> >>> > > >>> > > >> >> git bisect start
> > > > > >> >> >>> > > >>> > > >> >> git bisect good v1.6.0-chrome48-
> > > > > firefox42 #
> > > > > >> >> >assuming
> > > > > >> >> >>> > > this
> > > > > >> >> >>> > > >one
> > > > > >> >> >>> > > >>> > > >works
> > > > > >> >> >>> > > >>> > > >> >> git bisect bad v1.7.0 # assuming
> > this
> > > > > >version
> > > > > >> >> >doesn't
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> git will then checkout a
> > changeset
> > > > > for you
> > > > > >to
> > > > > >> >test
> > > > > >> >> >-
> > > > > >> >> >>> > > so
> > > > > >> >> >>> > > >make
> > > > > >> >> >>> > > >>> > > your
> > > > > >> >> >>> > > >>> > > >> >> build directory, run cmake and
> > carry
> > > > > out
> > > > > >your
> > > > > >> >> >tests.
> > > > > >> >> >>> > > If
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > test
> > > > > >> >> >>> > > >>> > > >is
> > > > > >> >> >>> > > >>> > > >> >> successful, run "git bisect
> > good",
> > > > > else run
> > > > > >> >"git
> > > > > >> >> >>> > > bisect
> > > > > >> >> >>> > > >bad".
> > > > > >> >> >>> > > >>> > > >You'll
> > > > > >> >> >>> > > >>> > > >> >> have to carry out roughly 6
> > tests. At
> > > > > the
> > > > > >end
> > > > > >> >of
> > > > > >> >> >the
> > > > > >> >> >>> > > >process
> > > > > >> >> >>> > > >>> > > >you'll
> > > > > >> >> >>> > > >>> > > >> >be
> > > > > >> >> >>> > > >>> > > >> >> told which commit in
> > libwebsockets
> > > > > produced
> > > > > >the
> > > > > >> >> >error
> > > > > >> >> >>> > > you
> > > > > >> >> >>> > > >are
> > > > > >> >> >>> > > >>> > > >seeing
> > > > > >> >> >>> > > >>> > > >> >-
> > > > > >> >> >>> > > >>> > > >> >> assuming that the problem is with
> > > > > >libwebsockets
> > > > > >> >of
> > > > > >> >> >>> > > course.
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> When you're running your tests,
> > make
> > > > > sure
> > > > > >you
> > > > > >> >> >start
> > > > > >> >> >>> > > from a
> > > > > >> >> >>> > > >>> > > clean
> > > > > >> >> >>> > > >>> > > >> >build
> > > > > >> >> >>> > > >>> > > >> >> and that your own client code is
> > also
> > > > > >> >recompiled
> > > > > >> >> >>> > > against
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > test
> > > > > >> >> >>> > > >>> > > >> >> version.
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> Best of luck,
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> Roger
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >> >> On Tue, Jul 5, 2016 at 6:48 PM,
> > Brice
> > > > > Hamon
> > > > > >> >> >>> > > >>> > > ><normandviking at gmail.com>
> > > > > >> >> >>> > > >>> > > >> >> wrote:
> > > > > >> >> >>> > > >>> > > >> >> > Thanks Andy,
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> > I will report my progress.
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> > The "Connection refused" is
> > > > > reported by
> > > > > >the
> > > > > >> >> >browser
> > > > > >> >> >>> > > >>> > > (Chrome), so
> > > > > >> >> >>> > > >>> > > >as
> > > > > >> >> >>> > > >>> > > >> >you
> > > > > >> >> >>> > > >>> > > >> >> > said, it could be something not
> > > > > transport
> > > > > >> >> >related,
> > > > > >> >> >>> > > but
> > > > > >> >> >>> > > >>> > > rather
> > > > > >> >> >>> > > >>> > > >SSL
> > > > > >> >> >>> > > >>> > > >> >as  I
> > > > > >> >> >>> > > >>> > > >> >> am
> > > > > >> >> >>> > > >>> > > >> >> > inclined to think.
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> > Thanks
> > > > > >> >> >>> > > >>> > > >> >> > Brice.
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> > On Tue, Jul 5, 2016 at 1:44 PM,
> > > > > Andy Green
> > > > > >> >> >>> > > ><andy at warmcat.co
> > > > > >> >> >>> > > >>> > > m>
> > > > > >> >> >>> > > >>> > > >> >wrote:
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> On July 5, 2016 11:40:30 PM
> > > > > GMT+08:00,
> > > > > >Brice
> > > > > >> >> >Hamon
> > > > > >> >> >>> > > >>> > > >> >> >> <normandviking at gmail.com>
> > wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >Hi Andy,
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >I have not made progress on
> > > > > finding
> > > > > >where
> > > > > >> >the
> > > > > >> >> >>> > > problem
> > > > > >> >> >>> > > >is.
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >One thing I was doing and
> > seemed
> > > > > strange
> > > > > >> >was
> > > > > >> >> >in
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >SSL
> > > > > >> >> >>> > > >>> > > certs
> > > > > >> >> >>> > > >>> > > >> >side:
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >if (http_ssl_)
> > > > > >> >> >>> > > >>> > > >> >> >> >    {
> > > > > >> >> >>> > > >>> > > >> >> >> >        if
> > (!chain_file_.empty())
> > > > > >> >> >>> > > >>> > > >> >> >> >        {
> > > > > >> >> >>> > > >>> > > >> >> >> >          // cert file is not
> > > > > needed as
> > > > > >> >it's
> > > > > >> >> >>> > > included
> > > > > >> >> >>> > > >in
> > > > > >> >> >>> > > >>> > > the
> > > > > >> >> >>> > > >>> > > >> >chain with
> > > > > >> >> >>> > > >>> > > >> >> >> >all intermediate cert.
> > > > > >> >> >>> > > >>> > > >> >> >> >           
> > > > > //info.ssl_cert_filepath =
> > > > > >> >> >>> > > >>> > > cert_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >info.ssl_private_key_filepath =
> > > > > >> >> >>> > > >>> > > key_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >           
> > > > > info.ssl_cert_filepath =
> > > > > >> >> >>> > > >chain_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >        }
> > > > > >> >> >>> > > >>> > > >> >> >> >        else
> > > > > >> >> >>> > > >>> > > >> >> >> >        {
> > > > > >> >> >>> > > >>> > > >> >> >> >            // Simple
> > key/cert
> > > > > WSS
> > > > > >> >> >>> > > >>> > > >> >> >> >           
> > > > > info.ssl_cert_filepath =
> > > > > >> >> >>> > > >cert_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >info.ssl_private_key_filepath =
> > > > > >> >> >>> > > >>> > > key_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >        }
> > > > > >> >> >>> > > >>> > > >> >> >> >    }
> > > > > >> >> >>> > > >>> > > >> >> >> >    else
> > > > > >> >> >>> > > >>> > > >> >> >> >    {
> > > > > >> >> >>> > > >>> > > >> >> >> >       
> > info.ssl_cert_filepath =
> > > > > NULL;
> > > > > >> >> >>> > > >>> > > >> >> >> >       
> > > > > info.ssl_private_key_filepath =
> > > > > >> >NULL;
> > > > > >> >> >>> > > >>> > > >> >> >> >    }
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.gid = -1;
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.uid = -1;
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.options = 0;
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.ka_time = 10; //
> > keep
> > > > > alive
> > > > > >every
> > > > > >> >10
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.ka_probes = 1; //
> > how
> > > > > many
> > > > > >times
> > > > > >> >to
> > > > > >> >> >try
> > > > > >> >> >>> > > to
> > > > > >> >> >>> > > >get
> > > > > >> >> >>> > > >>> > > >response
> > > > > >> >> >>> > > >>> > > >> >before
> > > > > >> >> >>> > > >>> > > >> >> >> >giving up
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.ka_interval = 2; //
> > how
> > > > > long to
> > > > > >> >wait
> > > > > >> >> >>> > > before
> > > > > >> >> >>> > > >each
> > > > > >> >> >>> > > >>> > > >> >ka_probes
> > > > > >> >> >>> > > >>> > > >> >> >> >    info.user = this; // to
> > get
> > > > > ourself
> > > > > >> >inthe
> > > > > >> >> >>> > > static
> > > > > >> >> >>> > > >>> > > callback
> > > > > >> >> >>> > > >>> > > >via
> > > > > >> >> >>> > > >>> > > >> >the
> > > > > >> >> >>> > > >>> > > >> >> >> >context.
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >    context_ =
> > > > > >> >> >>> > > libwebsocket_create_context(&info);
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >and this was the only way I
> > made
> > > > > the lib
> > > > > >> >work
> > > > > >> >> >>> > > with 3
> > > > > >> >> >>> > > >ssl
> > > > > >> >> >>> > > >>> > > files
> > > > > >> >> >>> > > >>> > > >> >(key,
> > > > > >> >> >>> > > >>> > > >> >> >> >cert
> > > > > >> >> >>> > > >>> > > >> >> >> >and chain).
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >I tried the "correct" way
> > with
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >info.ssl_cert_filepath       
> > =
> > > > > >> >> >>> > > cert_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >info.ssl_private_key_filepath
> > =
> > > > > >> >> >>> > > key_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >info.ssl_ca_filepath         
> > =
> > > > > >> >> >>> > > chain_file_.c_str();
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >With no luck.
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >Any clues?
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> Yeah your biggest clue is
> > > > > "Connection
> > > > > >> >Refused".
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> Also you should sanity-check
> > the
> > > > > lws test
> > > > > >> >> >server
> > > > > >> >> >>> > > itself
> > > > > >> >> >>> > > >>> > > works
> > > > > >> >> >>> > > >>> > > >on
> > > > > >> >> >>> > > >>> > > >> >your
> > > > > >> >> >>> > > >>> > > >> >> >> toolchain / platform.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >I think if we find the
> > problem in
> > > > > 1.7,
> > > > > >2.0
> > > > > >> >> >will
> > > > > >> >> >>> > > work
> > > > > >> >> >>> > > >as
> > > > > >> >> >>> > > >>> > > well.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> I understand it looks like
> > that to
> > > > > you,
> > > > > >> >since
> > > > > >> >> >you
> > > > > >> >> >>> > > try
> > > > > >> >> >>> > > >1.6
> > > > > >> >> >>> > > >>> > > and
> > > > > >> >> >>> > > >>> > > >it
> > > > > >> >> >>> > > >>> > > >> >works
> > > > > >> >> >>> > > >>> > > >> >> and
> > > > > >> >> >>> > > >>> > > >> >> >> 1.7 acts different.  But it's
> > not
> > > > > clear
> > > > > >the
> > > > > >> >> >>> > > problem is
> > > > > >> >> >>> > > >in
> > > > > >> >> >>> > > >>> > > the
> > > > > >> >> >>> > > >>> > > >lib.
> > > > > >> >> >>> > > >>> > > >> >> It's not
> > > > > >> >> >>> > > >>> > > >> >> >> even clear to me what the
> > problem
> > > > > is.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> If it was happening to me I
> > would
> > > > > grab
> > > > > >hold
> > > > > >> >of
> > > > > >> >> >the
> > > > > >> >> >>> > > >>> > > Connection
> > > > > >> >> >>> > > >>> > > >> >Refused
> > > > > >> >> >>> > > >>> > > >> >> end
> > > > > >> >> >>> > > >>> > > >> >> >> of it, eg look what netstat
> > says
> > > > > and
> > > > > >eyeball
> > > > > >> >> >>> > > traffic
> > > > > >> >> >>> > > >with
> > > > > >> >> >>> > > >>> > > >tcpdump.
> > > > > >> >> >>> > > >>> > > >> > The
> > > > > >> >> >>> > > >>> > > >> >> lib
> > > > > >> >> >>> > > >>> > > >> >> >> doesn't issue a tcp connection
> > > > > refused,
> > > > > >as I
> > > > > >> >> >>> > > explained
> > > > > >> >> >>> > > >it
> > > > > >> >> >>> > > >>> > > means
> > > > > >> >> >>> > > >>> > > >> >> something
> > > > > >> >> >>> > > >>> > > >> >> >> basic like the listen socket
> > is
> > > > > not
> > > > > >there.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> So the first move is confirm
> > if
> > > > > that is
> > > > > >> >> >literally
> > > > > >> >> >>> > > a tcp
> > > > > >> >> >>> > > >>> > > >connection
> > > > > >> >> >>> > > >>> > > >> >> >> refused, or you mean some
> > > > > handwaving
> > > > > >> >> >>> > > 'communication
> > > > > >> >> >>> > > >>> > > failed'
> > > > > >> >> >>> > > >>> > > >error
> > > > > >> >> >>> > > >>> > > >> >that
> > > > > >> >> >>> > > >>> > > >> >> is
> > > > > >> >> >>> > > >>> > > >> >> >> actually something totally
> > > > > different and
> > > > > >a
> > > > > >> >red
> > > > > >> >> >>> > > herring.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> Build it in debug mode
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> cmake -DCMAKE_BUILD_TYPE=DEBUG
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> and crank the logs up,
> > equivalent
> > > > > to
> > > > > >-d65535
> > > > > >> >on
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >test
> > > > > >> >> >>> > > >>> > > apps
> > > > > >> >> >>> > > >>> > > >and
> > > > > >> >> >>> > > >>> > > >> >look
> > > > > >> >> >>> > > >>> > > >> >> in
> > > > > >> >> >>> > > >>> > > >> >> >> there both at init and at
> > > > > connection
> > > > > >> >attempt.
> > > > > >> >> >>> > > Compare
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > logs
> > > > > >> >> >>> > > >>> > > >> >for test
> > > > > >> >> >>> > > >>> > > >> >> >> server in the same cases.
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> -Andy
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >Thank you in advance,
> > > > > >> >> >>> > > >>> > > >> >> >> >Brice.
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >On Mon, Jul 4, 2016 at 5:29
> > PM,
> > > > > Brice
> > > > > >Hamon
> > > > > >> >> >>> > > >>> > > >> ><normandviking at gmail.com>
> > > > > >> >> >>> > > >>> > > >> >> >> >wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >> Ok 1.7.0 breaks the server.
> > All
> > > > > >version
> > > > > >> >> >before
> > > > > >> >> >>> > > are
> > > > > >> >> >>> > > >OK.
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >> The only change I can see
> > > > > impacting my
> > > > > >> >code
> > > > > >> >> >was
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >>> > > warning:
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >> bswebsocket.cpp:155:23:
> > > > > warning:
> > > > > >`const
> > > > > >> >> >>> > > >lws_extension*
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > lws_get_internal_extensions()'
> > > > > is
> > > > > >> >deprecated
> > > > > >> >> >>> > > >(declared
> > > > > >> >> >>> > > >>> > > at
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > >
> > > > > >>
> > > > >
> > >>/export/home/development/3rdparty/include/libwebsockets.h:1877)
> > > > > >> >> >>> > > >>> > > >> >> >> >> [-Wdeprecated-declarations]
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >> So I am investigating in
> > that
> > > > > side.
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >> On Mon, Jul 4, 2016 at 4:25
> > PM,
> > > > > Brice
> > > > > >> >Hamon
> > > > > >> >> >>> > > >>> > > >> ><normandviking at gmail.com
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >> >> wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>> Hi Andy,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>> I am working backwards in
> > > > > version. So
> > > > > >> >far
> > > > > >> >> >>> > > 2.0.2 to
> > > > > >> >> >>> > > >>> > > 1.7.2
> > > > > >> >> >>> > > >>> > > >does
> > > > > >> >> >>> > > >>> > > >> >not
> > > > > >> >> >>> > > >>> > > >> >> >> >work.
> > > > > >> >> >>> > > >>> > > >> >> >> >>> 1.5.1 does work. I will
> > > > > eventually
> > > > > >where
> > > > > >> >it
> > > > > >> >> >>> > > breaks.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>> I'll keep you posted.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>> On Thu, Jun 30, 2016 at
> > 1:13
> > > > > PM,
> > > > > >Brice
> > > > > >> >> >Hamon
> > > > > >> >> >>> > > >>> > > >> >> >> ><normandviking at gmail.com>
> > > > > >> >> >>> > > >>> > > >> >> >> >>> wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> Thanks Andy,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> I do not think it is a
> > > > > networking or
> > > > > >> >> >>> > > environment
> > > > > >> >> >>> > > >>> > > issue as
> > > > > >> >> >>> > > >>> > > >the
> > > > > >> >> >>> > > >>> > > >> >same
> > > > > >> >> >>> > > >>> > > >> >> >> >code
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> running on the same host
> > with
> > > > > 1.4
> > > > > >works
> > > > > >> >> >and
> > > > > >> >> >>> > > not
> > > > > >> >> >>> > > >2.0.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> I just wanted to make
> > sure I
> > > > > did not
> > > > > >> >> >forgot
> > > > > >> >> >>> > > an new
> > > > > >> >> >>> > > >>> > > call to
> > > > > >> >> >>> > > >>> > > >> >init SSL
> > > > > >> >> >>> > > >>> > > >> >> >> >or
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> something like that not
> > > > > present in
> > > > > >1.4.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> I'll dig into it and
> > report
> > > > > back.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> Thanks again
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> Brice.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>> On Wed, Jun 29, 2016 at
> > 1:56
> > > > > PM,
> > > > > >Andy
> > > > > >> >> >Green
> > > > > >> >> >>> > > >>> > > >> ><andy at warmcat.com>
> > > > > >> >> >>> > > >>> > > >> >> >> >wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> On June 29, 2016
> > 11:52:31 PM
> > > > > >> >GMT+08:00,
> > > > > >> >> >>> > > Brice
> > > > > >> >> >>> > > >Hamon
> > > > > >> >> >>> > > >>> > > <
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> normandviking at gmail.com>
> > > > > wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Hi Andy,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >I just upgraded my
> > server
> > > > > from 1.4
> > > > > >to
> > > > > >> >> >2.0.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Not really a big task,
> > just
> > > > > lws_
> > > > > >and
> > > > > >> >a
> > > > > >> >> >>> > > couple of
> > > > > >> >> >>> > > >>> > > >> >adjustments,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >But now my server does
> > not
> > > > > work
> > > > > >> >anymore.
> > > > > >> >> > I
> > > > > >> >> >>> > > use
> > > > > >> >> >>> > > >an
> > > > > >> >> >>> > > >>> > > >external
> > > > > >> >> >>> > > >>> > > >> >> >> >polling
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >mechanism, and I see
> > the
> > > > > first
> > > > > >FD_ADD
> > > > > >> >so
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >epoll
> > > > > >> >> >>> > > >>> > > is
> > > > > >> >> >>> > > >>> > > >> >working.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> That doesn't follow
> > > > > actually, it
> > > > > >means
> > > > > >> >> >only
> > > > > >> >> >>> > > that
> > > > > >> >> >>> > > >>> > > lws'
> > > > > >> >> >>> > > >>> > > >code
> > > > > >> >> >>> > > >>> > > >> >to
> > > > > >> >> >>> > > >>> > > >> >> >> >expose
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> poll fds changes to the
> > > > > callback is
> > > > > >> >> >working;
> > > > > >> >> >>> > > it's
> > > > > >> >> >>> > > >>> > > caused
> > > > > >> >> >>> > > >>> > > >by
> > > > > >> >> >>> > > >>> > > >> >> >> >creating the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> listen socket during
> > init,
> > > > > not by
> > > > > >> >> >servicing
> > > > > >> >> >>> > > >(e)poll
> > > > > >> >> >>> > > >>> > > >events.
> > > > > >> >> >>> > > >>> > > >> >The
> > > > > >> >> >>> > > >>> > > >> >> >> >log
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> doesn't show any
> > evidence of
> > > > > >servicing
> > > > > >> >> >>> > > (e)poll
> > > > > >> >> >>> > > >>> > > events.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >But when I try to
> > connect
> > > > > with a
> > > > > >> >browser
> > > > > >> >> >or
> > > > > >> >> >>> > > >client
> > > > > >> >> >>> > > >>> > > >program
> > > > > >> >> >>> > > >>> > > >> >I get
> > > > > >> >> >>> > > >>> > > >> >> >> >a CONN
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >REFUSED and I don't see
> > > > > anything
> > > > > >> >> >happening
> > > > > >> >> >>> > > on
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > server
> > > > > >> >> >>> > > >>> > > >> >side. I
> > > > > >> >> >>> > > >>> > > >> >> >> >just
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >see
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >it listening on the
> > correct
> > > > > port.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> Connection refused is
> > really
> > > > > >specific,
> > > > > >> >it
> > > > > >> >> >>> > > means
> > > > > >> >> >>> > > >for
> > > > > >> >> >>> > > >>> > > the
> > > > > >> >> >>> > > >>> > > >peer
> > > > > >> >> >>> > > >>> > > >> >there
> > > > > >> >> >>> > > >>> > > >> >> >> >was
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> nobody listening at the
> > > > > port.  That
> > > > > >> >can
> > > > > >> >> >mean
> > > > > >> >> >>> > > the
> > > > > >> >> >>> > > >>> > > listen
> > > > > >> >> >>> > > >>> > > >> >socket
> > > > > >> >> >>> > > >>> > > >> >> >> >bound to a
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> This observation is still true
> > if
> > > > > it's
> > > > > >> >> >literally
> > > > > >> >> >>> > > >>> > > "Connection
> > > > > >> >> >>> > > >>> > > >> >Refused".
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> -Andy
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> different interface than
> > > > > your
> > > > > >client
> > > > > >> >> >reached
> > > > > >> >> >>> > > >(check
> > > > > >> >> >>> > > >>> > > it
> > > > > >> >> >>> > > >>> > > >with
> > > > > >> >> >>> > > >>> > > >> >> >> >netstat -pltn
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> at the server, 0.0.0.0
> > means
> > > > > all
> > > > > >> >> >interfaces)
> > > > > >> >> >>> > > or a
> > > > > >> >> >>> > > >>> > > >firewall
> > > > > >> >> >>> > > >>> > > >> >got in
> > > > > >> >> >>> > > >>> > > >> >> >> >the way,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> or you reached the wrong
> > ip
> > > > > (name
> > > > > >> >> >resolution
> > > > > >> >> >>> > > >issue
> > > > > >> >> >>> > > >>> > > at
> > > > > >> >> >>> > > >>> > > >> >client).
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >I compiled the lib
> > plain
> > > > > vanilla
> > > > > >with
> > > > > >> >no
> > > > > >> >> >>> > > >options.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Here is what I get as
> > > > > startup from
> > > > > >> >your
> > > > > >> >> >>> > > lib:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694159
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Initial
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >logging
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >level 15
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694176
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Libwebsockets
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >version: 2.0.0
> > > > > >> >> >xxxx at xxxx-v2.0.0-95-ge943a02
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694181
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >IPV6
> > > > > >> >> >>> > > >>> > > >> >> >> >not
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >compiled in
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694193
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >libev
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >support
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >not compiled in
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694198
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >libuv
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >support
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >not compiled in
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694356
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Threads: 1
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >each 1024 fds
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694453
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> > mem:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >platform
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >fd map:  8192 bytes
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.694526
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Compiled
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >with
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >OpenSSL support
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.695057
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Creating
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Vhost
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >'default' port 7682, 2
> > > > > protocols,
> > > > > >> >IPv6
> > > > > >> >> >off
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.695102
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Using SSL
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >mode
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.698961
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> > SSL
> > > > > >> >> >>> > > >>> > > >> >> >> >ECDH
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >curve
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >'prime256v1'
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.699011
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >callback_http
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > >
> > > > > >>LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS
> > > > > >> >> >>> > > >>> > > fd=0
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >context=0x7efff0002800
> > > > > user=[`uZ&]
> > > > > >> >len=0
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.699021
> > > > > ERROR:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >> >callback_http: case
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > >
> > > > > >>LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS
> > > > > >> >> >>> > > >>> > > not
> > > > > >> >> >>> > > >>> > > >> >handled.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700680
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >callback_http
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >LWS_CALLBACK_LOCK_POLL
> > > > > fd=85
> > > > > >> >> >>> > > >context=0x7efff0002800
> > > > > >> >> >>> > > >>> > > >> >user=[NULL]
> > > > > >> >> >>> > > >>> > > >> >> >> >len=1
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700719
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >callback_http
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > >LWS_CALLBACK_ADD_POLL_FD
> > > > > fd=85
> > > > > >> >> >>> > > >>> > > context=0x7efff0002800
> > > > > >> >> >>> > > >>> > > >> >user=[NULL]
> > > > > >> >> >>> > > >>> > > >> >> >> >len=0
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700758
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >callback_http
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > >LWS_CALLBACK_UNLOCK_POLL
> > > > > fd=85
> > > > > >> >> >>> > > >>> > > context=0x7efff0002800
> > > > > >> >> >>> > > >>> > > >> >user=[NULL]
> > > > > >> >> >>> > > >>> > > >> >> >> >len=1
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700811
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >Listening
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >on
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >port 7682
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700834
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> > mem:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >per-conn:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >         496 bytes +
> > > > > protocol rx
> > > > > >buf
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:24.700919
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> > canonical_hostname =
> > xxxx
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Then a
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:25.972014
> > > > > DEBUG:
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >libwebsocket:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >lws_protocol_init
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:25.972043
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >callback_http
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > >LWS_CALLBACK_PROTOCOL_INIT
> > > > > fd=0
> > > > > >> >> >>> > > >>> > > context=0x7efff0002800
> > > > > >> >> >>> > > >>> > > >> >> >> >user=[NULL]
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >len=0
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >16-06-29
> > 11:38:25.972049
> > > > > INFO :
> > > > > >> >> >[WEBSOCKET
> > > > > >> >> >>> > > ]:
> > > > > >> >> >>> > > >>> > > >> >callback_http:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > >LWS_CALLBACK_PROTOCOL_INIT
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >And nothing else after
> > > > > that.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> Connection Refused is a
> > tcp
> > > > > level
> > > > > >> >thing,
> > > > > >> >> >it
> > > > > >> >> >>> > > means
> > > > > >> >> >>> > > >>> > > you did
> > > > > >> >> >>> > > >>> > > >> >not
> > > > > >> >> >>> > > >>> > > >> >> >> >succeed
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> to touch the listen
> > socket. 
> > > > > So
> > > > > >there
> > > > > >> >> >would
> > > > > >> >> >>> > > be no
> > > > > >> >> >>> > > >>> > > sign of
> > > > > >> >> >>> > > >>> > > >> >activity
> > > > > >> >> >>> > > >>> > > >> >> >> >from lws
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> about that.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >I guess  my straight
> > port
> > > > > from 1.4
> > > > > >to
> > > > > >> >> >2.0
> > > > > >> >> >>> > > was
> > > > > >> >> >>> > > >just
> > > > > >> >> >>> > > >>> > > been
> > > > > >> >> >>> > > >>> > > >> >> >> >optimistic. I
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >am
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >forgetting something
> > > > > essential in
> > > > > >> >order
> > > > > >> >> >to
> > > > > >> >> >>> > > have
> > > > > >> >> >>> > > >2.0
> > > > > >> >> >>> > > >>> > > >working
> > > > > >> >> >>> > > >>> > > >> >like
> > > > > >> >> >>> > > >>> > > >> >> >> >in
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >1.4.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> I think either lws bound
> > to
> > > > > the
> > > > > >wrong
> > > > > >> >> >>> > > network
> > > > > >> >> >>> > > >>> > > interface
> > > > > >> >> >>> > > >>> > > >for
> > > > > >> >> >>> > > >>> > > >> >> >> >listen, or
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> the issue is outside
> > lws.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Also the only question
> > I
> > > > > had
> > > > > >during
> > > > > >> >the
> > > > > >> >> >>> > > port is
> > > > > >> >> >>> > > >>> > > that I
> > > > > >> >> >>> > > >>> > > >used
> > > > > >> >> >>> > > >>> > > >> >the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >context->user pointer
> > to
> > > > > store my
> > > > > >own
> > > > > >> >> >>> > > websocket
> > > > > >> >> >>> > > >>> > > object.
> > > > > >> >> >>> > > >>> > > >I
> > > > > >> >> >>> > > >>> > > >> >now
> > > > > >> >> >>> > > >>> > > >> >> >> >need to
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >to a
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >// Getting the context
> > from
> > > > > the
> > > > > >wsi
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >struct lws_context
> > *wsicont
> > > > > =
> > > > > >> >> >>> > > >lws_get_context(wsi);
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >// Getting the user cd
> > from
> > > > > the
> > > > > >> >context
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >BSWebSocket *websocket
> > =
> > > > > >(BSWebSocket
> > > > > >> >> >>> > > >>> > > >> >> >> >*)lws_context_user(wsicont);
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Is there a better way
> > to do
> > > > > that?
> > > > > >I
> > > > > >> >> >already
> > > > > >> >> >>> > > use
> > > > > >> >> >>> > > >the
> > > > > >> >> >>> > > >>> > > user
> > > > > >> >> >>> > > >>> > > >> >pointer
> > > > > >> >> >>> > > >>> > > >> >> >> >of the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >callback to get my
> > > > > >per_session_data
> > > > > >> >> >>> > > structure.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> No it looks good.  Both
> > of
> > > > > those
> > > > > >apis
> > > > > >> >are
> > > > > >> >> >>> > > really
> > > > > >> >> >>> > > >>> > > cheap,
> > > > > >> >> >>> > > >>> > > >just
> > > > > >> >> >>> > > >>> > > >> >> >> >resolve to
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> a struct member
> > dereference
> > > > > each.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> -Andy
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Thank you,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >Brice.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >On Thu, Jun 2, 2016 at
> > 8:48
> > > > > PM,
> > > > > >Brice
> > > > > >> >> >Hamon
> > > > > >> >> >>> > > >>> > > >> >> >> ><normandviking at gmail.com>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >> Thank you Andy,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >> I will get going and
> > > > > report my
> > > > > >> >> >findings.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >> Thanks again.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >> Brice.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >> On Thu, Jun 2, 2016
> > at
> > > > > 6:20 PM,
> > > > > >> >Andy
> > > > > >> >> >>> > > Green
> > > > > >> >> >>> > > >>> > > >> ><andy at warmcat.com>
> > > > > >> >> >>> > > >>> > > >> >> >> >wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> On June 3, 2016
> > 1:08:32
> > > > > AM
> > > > > >> >GMT+08:00,
> > > > > >> >> >>> > > Brice
> > > > > >> >> >>> > > >>> > > Hamon <
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> normandviking at gmail.
> > com>
> > > > > wrote:
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >Hi all,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >I have been using
> > > > > libwebsocket
> > > > > >> >1.4
> > > > > >> >> >with
> > > > > >> >> >>> > > >>> > > external
> > > > > >> >> >>> > > >>> > > >epoll
> > > > > >> >> >>> > > >>> > > >> >> >> >notification
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >loop
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >without a single
> > > > > problem for
> > > > > >over
> > > > > >> >a
> > > > > >> >> >>> > > year
> > > > > >> >> >>> > > >now.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> Great.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >All the
> > libwebsocket
> > > > > functions
> > > > > >> >are
> > > > > >> >> >>> > > happening
> > > > > >> >> >>> > > >in
> > > > > >> >> >>> > > >>> > > one
> > > > > >> >> >>> > > >>> > > >> >thread so
> > > > > >> >> >>> > > >>> > > >> >> >> >I
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >have
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >followed all
> > guidelines
> > > > > in the
> > > > > >> >> >>> > > README.coding
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >from that version.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >I think it is now
> > time
> > > > > for me
> > > > > >to
> > > > > >> >> >>> > > upgrade as,
> > > > > >> >> >>> > > >>> > > >following
> > > > > >> >> >>> > > >>> > > >> >this
> > > > > >> >> >>> > > >>> > > >> >> >> >group,
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >many
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >fix
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >and enhancement
> > took
> > > > > place.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >Is there specific
> > areas
> > > > > of
> > > > > >change
> > > > > >> >I
> > > > > >> >> >>> > > should
> > > > > >> >> >>> > > >be
> > > > > >> >> >>> > > >>> > > >concerned
> > > > > >> >> >>> > > >>> > > >> >with,
> > > > > >> >> >>> > > >>> > > >> >> >> >or
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >important
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >changes in the
> > > > > notification
> > > > > >area?
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> Yes at 1.6 many api
> > > > > names got
> > > > > >> >> >simplified
> > > > > >> >> >>> > > and
> > > > > >> >> >>> > > >>> > > >> >rationalized.
> > > > > >> >> >>> > > >>> > > >> >> >> >Mainly
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> api prefix got
> > > > > standardized to
> > > > > >> >> >'lws_'.
> > > > > >> >> >>> > > There
> > > > > >> >> >>> > > >>> > > are 4
> > > > > >> >> >>> > > >>> > > >> >steps
> > > > > >> >> >>> > > >>> > > >> >> >> >listed in
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> changelog
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > >
> > > > > >> >>
> > > > > >>>>>https://github.com/warmcat/libwebsockets/blob/v2.0-stabl
> > e/ch
> > > > > ange
> > > > > >> >> >>> > > l
> > > > > >> >> >>> > > >>> > > og#L643
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> to search / replace
> > > > > everything
> > > > > >in
> > > > > >> >> >your
> > > > > >> >> >>> > > code
> > > > > >> >> >>> > > >into
> > > > > >> >> >>> > > >>> > > >shape.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> There are many other
> > > > > changes
> > > > > >and
> > > > > >> >> >>> > > >improvements,
> > > > > >> >> >>> > > >>> > > such
> > > > > >> >> >>> > > >>> > > >as
> > > > > >> >> >>> > > >>> > > >> >> >> >multiple
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >vhost
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> support, CGI
> > support,
> > > > > protocol
> > > > > >> >> >plugins,
> > > > > >> >> >>> > > lwsws
> > > > > >> >> >>> > > >>> > > etc.
> > > > > >> >> >>> > > >>> > > >It's
> > > > > >> >> >>> > > >>> > > >> >hard
> > > > > >> >> >>> > > >>> > > >> >> >> >to
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >predict
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> which are
> > interesting,
> > > > > if you
> > > > > >have
> > > > > >> >> >>> > > external
> > > > > >> >> >>> > > >>> > > epoll()
> > > > > >> >> >>> > > >>> > > >just
> > > > > >> >> >>> > > >>> > > >> >to
> > > > > >> >> >>> > > >>> > > >> >> >> >get
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >epoll, the
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> new built-in libuv
> > > > > support
> > > > > >might
> > > > > >> >be
> > > > > >> >> >>> > > >>> > > interesting... if
> > > > > >> >> >>> > > >>> > > >so
> > > > > >> >> >>> > > >>> > > >> >then
> > > > > >> >> >>> > > >>> > > >> >> >> >lwsws
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >and
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> plugins might also
> > > > > simplify
> > > > > >your
> > > > > >> >> >life.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> If you need external
> > > > > event loop
> > > > > >to
> > > > > >> >> >>> > > interface
> > > > > >> >> >>> > > >to
> > > > > >> >> >>> > > >>> > > >> >something
> > > > > >> >> >>> > > >>> > > >> >> >> >else, then
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >that
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> should still work
> > the
> > > > > same.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >Thanks all and
> > > > > especially
> > > > > >Andy,
> > > > > >> >your
> > > > > >> >> >>> > > lib
> > > > > >> >> >>> > > >rocks
> > > > > >> >> >>> > > >>> > > :)
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> Thanks for the kind
> > > > > words ^^
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> -Andy
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >Brice.
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > >
> > > > > >> >>
> > > > > >>>>>>>>-----------------------------------------------------
> > ----
> > > > > ---
> > > > > >> >> >>> > > >>> > > ------------
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > >
> > >>_______________________________________________
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>> >Libwebsockets
> > mailing
> > > > > list
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >>Libwebsockets at ml.libwebsockets.org
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>>http://libwebsockets.org/mailman/listinfo/libwebsock
> > ets
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >_______________________________________________
> > > > > >> >> >>> > > >>> > > >> >> > Libwebsockets mailing list
> > > > > >> >> >>> > > >>> > > >> >> > Libwebsockets at ml.libwebsockets.
> > org
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >http://libwebsockets.org/mailman/listinfo/libwebsoc
> > > > > >> >> >>> > > kets
> > > > > >> >> >>> > > >>> > > >> >> >
> > > > > >> >> >>> > > >>> > > >> >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > > >>
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> > >
> > > > > >> >> >>> > > >>> >
> > > > > >> >> >>> > > >>>
> > _______________________________________________
> > > > > >> >> >>> > > >>> Libwebsockets mailing list
> > > > > >> >> >>> > > >>> Libwebsockets at ml.libwebsockets.org
> > > > > >> >> >>> > > >>>
> > > > > >http://libwebsockets.org/mailman/listinfo/libwebsockets
> > > > > >> >> >>> > > >>>
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > > >>
> > > > > >> >> >>> > >
> > > > > >> >> >>> > >
> > > > > >> >> >>> >
> > > > > >> >> >>>
> > > > > >> >> >>
> > > > > >> >> >>
> > > > > >> >>
> > > > > >> >>
> > > > > >>
> > > > > >>
> > > > >
> > > > >
> > > >
> > > >
> > >
> > 
> 



More information about the Libwebsockets mailing list