aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/smpp_smsc.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc/smpp_smsc.c')
-rw-r--r--openbsc/src/libmsc/smpp_smsc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c
index 2b17d1230..1dc37fdd8 100644
--- a/openbsc/src/libmsc/smpp_smsc.c
+++ b/openbsc/src/libmsc/smpp_smsc.c
@@ -867,8 +867,10 @@ static int link_accept_cb(struct smsc *smsc, int fd,
struct sockaddr_storage *s, socklen_t s_len)
{
struct osmo_esme *esme = talloc_zero(smsc, struct osmo_esme);
- if (!esme)
+ if (!esme) {
+ close(fd);
return -ENOMEM;
+ }
smpp_esme_get(esme);
esme->own_seq_nr = rand();
@@ -880,6 +882,7 @@ static int link_accept_cb(struct smsc *smsc, int fd,
esme->wqueue.bfd.when = BSC_FD_READ;
if (osmo_fd_register(&esme->wqueue.bfd) != 0) {
+ close(fd);
talloc_free(esme);
return -EIO;
}