[Libwebsockets] Libwebsocket Upgrade from 1.4

Brice Hamon normandviking at gmail.com
Thu Jul 7 23:56:01 CEST 2016


Arrgh !! :)

Thank you ! I did not think at looking at the ev implementation.

I can see he does set .events and .revents in case of a READ like I was
trying to work around that check :

eventfd.revents = EV_NONE;
if (revents & EV_READ) {
​    ​
eventfd.events |= LWS_POLLIN;
​    ​
eventfd.revents |= LWS_POLLIN;
}

​I will look into this and report.

Thanks again.

​


On Thu, Jul 7, 2016 at 5:48 PM, Andy Green <andy at warmcat.com> wrote:

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


More information about the Libwebsockets mailing list