Open fraunhofer-iis-bot opened 1 year ago
In GitLab by @vornkat-iis on May 8, 2023, 12:02
created branch 49-server-has-to-remove-ungracefull-disconnected-zombie-clients
to address this issue
In GitLab by @schreimz on May 10, 2023, 18:01
This issue is found here: https://git01.iis.fhg.de/abt-hfs/interstellar/dbcd/-/issues/371 Implementing tcp keepalive does not solve the problem for interstellar, since an additional websocketd is running between japi server and client.
Keepalive is in any way an usefull feature if configurable (through japi function)
In GitLab by @schreimz on May 10, 2023, 18:01
mentioned in issue abt-hfs/interstellar/dbcd#371
In GitLab by @Michael-M-Baron on May 5, 2023, 16:06
We are currently facing a problem using the libjapi in Interstellar dbcd. In short, our libjapi-server is fixed to allow only one client at a time. If a client was connected and has network issues, the connection is lost but the client is still open inside the server. This means that no new client can connect to the server anymore and the aplication has to be restarted.
Under normal circumstances, the client will send an EOF while disconnecting. The server recognizes this, closes the socket and removes the client properly. Problems start to occur, when the client disconnects without terminating the connection properly (Due to network problems etc.). The client socket will then still be seen as active inside the server. The server needs to remove the client socket in such cases.
To fix this problem, a mechanism has to be implemented to remove ungracefull disconnected zombie clients inside the server. The server has to somehow verify if the client sockets are still connected properly. There are two ideas how to implement this:
Both approaches should be optional and backwards compatible.
This seems to be also a kind of general problem working with servers/clients and TCP/IP. May be there are better solutions?