Attention is currently required from: laforge.
1 comment:
Commit Message:
Not sure why, but select() keeps reporting read events it seems,
even though the client doesn't send any packets anymore.
it sounds like the normal semantics of a dead socket: readable, but length of read() returns 0. […]
Looks like the code was originally designed with the idea to set the connection flag `OSMO_STREAM_SRV_F_FLUSH_DESTROY`, allow all messages to be sent and only then destroy the connection.
So the server gets stuck, because the condition `if (osmo_iofd_txqueue_len(iofd) == 0)` is never met on subsequent iterations, i.e. the messages don't all get sent out for whatever reason.
Is it actually possible, that the socket is `read()`-dead, but messages can still be sent out on the connection?
If not, maybe we can simplify the code and do away with the condition check mentioned above, instead of destroying the connection on the next call to this function.
To view, visit change 33196. To unsubscribe, or for help writing mail filters, visit settings.