[Libwebsockets] Libwebsocket Upgrade from 1.4

Andy Green andy at warmcat.com
Mon Jul 11 03:02:07 CEST 2016


On Sun, 2016-07-10 at 20:54 -0400, Brice Hamon wrote:
> Not exactly. 
> 
> We have a site wildcard certs *.xxx.com and we use it everywhere.
> 
> And we DNS the different environments dev.xxx.com etc to a registered
> IP, which points to a load balancer.
> 
> So the farm of WS servers have no knowledge of environments they are
> running in i.e different farms at different locations.

Lws only needs to know if the vhost should be called "dev.xxx.com",
"staging.xxx.com", or "xxx.com", nothing else like IPs or whatever.

If even that information doesn't exist on the host (is it really true?)
then you need something new, that you could call the vhost "*.xxx.com"
and have it match any of them, since the wildcard cert will accept any
of them.

Is that what we are talking about?

-Andy


> On Sun, Jul 10, 2016 at 8:44 PM, Andy Green <andy at warmcat.com> wrote:
> > 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 gm
> > ail.
> > > > 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.co
> > m>
> > > > > > 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 war
> > mcat
> > > > .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/tes
> > t-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 <and
> > y 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 gm
> > ail.
> > > > 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-s
> > tabl
> > > > 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/libweb
> > sock
> > > > ets
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>> >>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>>
> > > > > > > >> >> >>> > > >>> > > >> >> >> >>
> > > > > > > >> >> >>> > > >>> > > >> >> >>
> > > > > > > >> >> >>> > > >>> > > >> >> >
> > > > > > > >> >> >>> > > >>> > > >> >> >
> > > > > > > >> >> >>> > > >>> > > >> >> >
> > > > > > > >> >_______________________________________________
> > > > > > > >> >> >>> > > >>> > > >> >> > Libwebsockets mailing list
> > > > > > > >> >> >>> > > >>> > > >> >> > Libwebsockets at ml.libwebsock
> > ets.
> > > > org
> > > > > > > >> >> >>> > > >>> > > >> >> >
> > > > > > > >> >> >http://libwebsockets.org/mailman/listinfo/libwebso
> > c
> > > > > > > >> >> >>> > > kets
> > > > > > > >> >> >>> > > >>> > > >> >> >
> > > > > > > >> >> >>> > > >>> > > >> >>
> > > > > > > >> >> >>> > > >>> > > >>
> > > > > > > >> >> >>> > > >>> > > >>
> > > > > > > >> >> >>> > > >>> > >
> > > > > > > >> >> >>> > > >>> > >
> > > > > > > >> >> >>> > > >>> >
> > > > > > > >> >> >>> > > >>>
> > > > _______________________________________________
> > > > > > > >> >> >>> > > >>> Libwebsockets mailing list
> > > > > > > >> >> >>> > > >>> Libwebsockets at ml.libwebsockets.org
> > > > > > > >> >> >>> > > >>>
> > > > > > > >http://libwebsockets.org/mailman/listinfo/libwebsockets
> > > > > > > >> >> >>> > > >>>
> > > > > > > >> >> >>> > > >>
> > > > > > > >> >> >>> > > >>
> > > > > > > >> >> >>> > >
> > > > > > > >> >> >>> > >
> > > > > > > >> >> >>> >
> > > > > > > >> >> >>>
> > > > > > > >> >> >>
> > > > > > > >> >> >>
> > > > > > > >> >>
> > > > > > > >> >>
> > > > > > > >>
> > > > > > > >>
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > 
> 



More information about the Libwebsockets mailing list