From: Holger Hans Peter Freyther holger@moiji-mobile.com
When the link is being created BSC_FD_WRITE and BSC_FD_READ are being ored into the flag. When the socket connects the first time the ipa_client_fd_cb function is called and the link->state is moved from connecting to connect.
In case the connection drops and ipa_client_conn_open is called again the BSC_FD_WRITE flag might not be set. This means that after the socket is connected, ipa_client_fd_cb will not be called. This means that the updown_cb will not be called until after the first write or read on the socket. It might even lead to missing some data.
When re-connecting set the write flag again. --- src/input/ipa.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/src/input/ipa.c b/src/input/ipa.c index e2da6f4..1ddf802 100644 --- a/src/input/ipa.c +++ b/src/input/ipa.c @@ -218,6 +218,7 @@ int ipa_client_conn_open(struct ipa_client_conn *link) return ret; } link->ofd->fd = ret; + link->ofd->when |= BSC_FD_WRITE; if (osmo_fd_register(link->ofd) < 0) { close(ret); link->ofd->fd = -1;