aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r--openbsc/src/libmsc/meas_feed.c3
-rw-r--r--openbsc/src/libmsc/smpp_smsc.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/openbsc/src/libmsc/meas_feed.c b/openbsc/src/libmsc/meas_feed.c
index 86ba3b712..86d679abf 100644
--- a/openbsc/src/libmsc/meas_feed.c
+++ b/openbsc/src/libmsc/meas_feed.c
@@ -61,7 +61,8 @@ static int process_meas_rep(struct gsm_meas_rep *mr)
memcpy(&mfm->mr, mr, sizeof(mfm->mr));
/* and send it to the socket */
- osmo_wqueue_enqueue(&g_mfs.wqueue, msg);
+ if (osmo_wqueue_enqueue(&g_mfs.wqueue, msg) != 0)
+ msgb_free(msg);
return 0;
}
diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c
index 048c1b802..c1ec22f5b 100644
--- a/openbsc/src/libmsc/smpp_smsc.c
+++ b/openbsc/src/libmsc/smpp_smsc.c
@@ -352,7 +352,13 @@ static int pack_and_send(struct osmo_esme *esme, uint32_t type, void *ptr)
}
msgb_put(msg, rlen);
- return osmo_wqueue_enqueue(&esme->wqueue, msg);
+ if (osmo_wqueue_enqueue(&esme->wqueue, msg) != 0) {
+ LOGP(DSMPP, LOGL_ERROR, "[%s] Write queue full. Dropping message\n",
+ esme->system_id);
+ msgb_free(msg);
+ return -EAGAIN;
+ }
+ return 0;
}
/*! \brief transmit a generic NACK to a remote ESME */