aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo_client_network.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osmo_client_network.c')
-rw-r--r--src/osmo_client_network.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/osmo_client_network.c b/src/osmo_client_network.c
index a588f07..f9303e9 100644
--- a/src/osmo_client_network.c
+++ b/src/osmo_client_network.c
@@ -46,13 +46,7 @@ static void _osmo_client_connect(void *_data)
static void lost_connection(struct osmo_pcap_client_conn *conn)
{
- if (conn->wqueue.bfd.fd >= 0) {
- osmo_tls_release(&conn->tls_session);
- osmo_fd_unregister(&conn->wqueue.bfd);
- close(conn->wqueue.bfd.fd);
- conn->wqueue.bfd.fd = -1;
- }
-
+ osmo_client_disconnect(conn);
conn->timer.cb = _osmo_client_connect;
conn->timer.data = conn;
@@ -260,3 +254,15 @@ void osmo_client_reconnect(struct osmo_pcap_client_conn *conn)
{
lost_connection(conn);
}
+
+void osmo_client_disconnect(struct osmo_pcap_client_conn *conn)
+{
+ if (conn->wqueue.bfd.fd >= 0) {
+ osmo_tls_release(&conn->tls_session);
+ osmo_fd_unregister(&conn->wqueue.bfd);
+ close(conn->wqueue.bfd.fd);
+ conn->wqueue.bfd.fd = -1;
+ }
+
+ osmo_timer_del(&conn->timer);
+}