aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/bsc_msc.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libbsc/bsc_msc.c')
-rw-r--r--openbsc/src/libbsc/bsc_msc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/bsc_msc.c b/openbsc/src/libbsc/bsc_msc.c
index 1a0f78aea..a24efabb0 100644
--- a/openbsc/src/libbsc/bsc_msc.c
+++ b/openbsc/src/libbsc/bsc_msc.c
@@ -42,6 +42,13 @@ static void connection_loss(struct bsc_msc_connection *con)
fd = &con->write_queue.bfd;
+ if (con->pending_msg) {
+ LOGP(DMSC, LOGL_ERROR,
+ "MSC(%s) dropping incomplete message.\n", con->name);
+ msgb_free(con->pending_msg);
+ con->pending_msg = NULL;
+ }
+
close(fd->fd);
fd->fd = -1;
fd->cb = osmo_wqueue_bfd_cb;
@@ -162,6 +169,9 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
con->is_connected = 0;
+ msgb_free(con->pending_msg);
+ con->pending_msg = NULL;
+
fd = &con->write_queue.bfd;
fd->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
fd->priv_nr = 1;