Hi Jens, Have you tested whether your server is able to accept concurrent connections normally? E.g. if you open a connection with telnet or something without sending any bytes, leave that open, and then try to use your server, does it work?
What does your listen loop look like? -Kenton On Tue, Nov 8, 2022 at 1:33 PM Jens Alfke <[email protected]> wrote: > I’ve got a CapnP-based server program running on a Raspberry Pi 4. It’s > written in C++, using CapnP 0.9.1. It’s single-threaded; the main() > function just sets up a listener, calls kj::NEVER_DONE.wait, and stays > there. > > It works fine, except that every few weeks it stops accepting connections; > it either doesn’t accept the incoming socket at all or never reads from it, > I can’t tell which; all I see is that the client times out and gives up > after 15 seconds. Then I have to kill and relaunch the server, after which > it works fine again for a while. > > The server process itself isn’t hung; it’s in epoll waiting for events. I > attached gdb and got this backtrace: > > #0 0xb6b8563c in epoll_wait (epfd=7, events=0xbecb4210, maxevents=16, > timeout=-1) > #1 0x0052edcc in kj::UnixEventPort::doEpollWait (this=0x1fed420, > timeout=-1) > #2 0x0052e58c in kj::UnixEventPort::wait (this=0x1fed420) > #3 0x00487744 in kj::EventLoop::wait (this=0x1fed4e0) > #4 0x00488460 in kj::_::waitImpl (node=..., result=..., waitScope=…) > #5 0x00488bd8 in kj::_::NeverDone::wait (this=0x72d3c0 <kj::NEVER_DONE>, > waitScope=…) > … > > > The last line in the log shows that it received a connection from some > unknown IPv4 address which geolocates to Russia (this happens a few times a > day; the server’s on my home LAN but exposes a public port and I assume > these are random hackers looking for vulns.) This connection never did > anything, not surprisingly since I doubt hackers are expecting anything > other than HTTP, but the logs show the socket never closed. And sure > enough, if I run `lsof` I see an open TCP port from that address. (Which > has been open for at least 24 hours, strangely; doesn’t the disconnect idle > TCP connections after 90 minutes?) > > I’m not sure what to do about this. I assume CapnP is capable of handling > multiple incoming connections, so this idle socket won’t block others from > connecting, right? But if not, then why isn’t it accepting any connections? > > —Jens > > -- > You received this message because you are subscribed to the Google Groups > "Cap'n Proto" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/capnproto/008DEC56-3B4D-4CF7-BFC3-5BECC13BE502%40mooseyard.com > <https://groups.google.com/d/msgid/capnproto/008DEC56-3B4D-4CF7-BFC3-5BECC13BE502%40mooseyard.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Cap'n Proto" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/capnproto/CAJouXQ%3D6xH_pyvRGBnRpTma6_K2mU8Ogn%2BptcQ9RytARhAUrAw%40mail.gmail.com.
