aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/mncc_sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc/mncc_sock.c')
-rw-r--r--openbsc/src/libmsc/mncc_sock.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/mncc_sock.c b/openbsc/src/libmsc/mncc_sock.c
index 5ef9922d2..d8caf0754 100644
--- a/openbsc/src/libmsc/mncc_sock.c
+++ b/openbsc/src/libmsc/mncc_sock.c
@@ -165,6 +165,13 @@ static int mncc_sock_write(struct osmo_fd *bfd)
bfd->when &= ~BSC_FD_WRITE;
+ /* bug hunter 8-): maybe someone forgot msgb_put(...) ? */
+ if (!msgb_length(msg)) {
+ LOGP(DMNCC, LOGL_ERROR, "message type (%d) with ZERO "
+ "bytes!\n", mncc_prim->msg_type);
+ goto dontsend;
+ }
+
/* try to send it over the socket */
rc = write(bfd->fd, msgb_data(msg), msgb_length(msg));
if (rc == 0)
@@ -176,6 +183,8 @@ static int mncc_sock_write(struct osmo_fd *bfd)
}
goto close;
}
+
+dontsend:
/* _after_ we send it, we can deueue */
msg2 = msgb_dequeue(&net->upqueue);
assert(msg == msg2);