diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-02-22 10:14:16 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-02-22 12:11:28 +0100 |
commit | 04719d19b94b52a915d149ff553385e857ec8441 (patch) | |
tree | 39d932634ca5582154b8c11f8ec1ac17c1ceb373 /src/osmo-bts-virtual | |
parent | a4bca115557feb0268e6cfda30238ded16328ae6 (diff) |
osmo-bts-virtual: Shut down gracefully on socket creation failure
Don't simply crash if creation of the multicast socket fails
Change-Id: Ie87b6684b3aa7f21742e4cf21533e980485c1230
Diffstat (limited to 'src/osmo-bts-virtual')
-rw-r--r-- | src/osmo-bts-virtual/l1_if.c | 4 | ||||
-rw-r--r-- | src/osmo-bts-virtual/virtual_um.c | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/osmo-bts-virtual/l1_if.c b/src/osmo-bts-virtual/l1_if.c index e7478a02..290e0978 100644 --- a/src/osmo-bts-virtual/l1_if.c +++ b/src/osmo-bts-virtual/l1_if.c @@ -193,12 +193,12 @@ int bts_model_phy_link_open(struct phy_link *plink) plink->u.virt.virt_um = virt_um_init(plink, plink->u.virt.ms_mcast_group, plink->u.virt.ms_mcast_port, plink->u.virt.bts_mcast_group, plink->u.virt.bts_mcast_port, virt_um_rcv_cb); - /* set back reference to plink */ - plink->u.virt.virt_um->priv = plink; if (!plink->u.virt.virt_um) { phy_link_state_set(plink, PHY_LINK_SHUTDOWN); return -1; } + /* set back reference to plink */ + plink->u.virt.virt_um->priv = plink; /* iterate over list of PHY instances and initialize the scheduler */ llist_for_each_entry(pinst, &plink->instances, list) { diff --git a/src/osmo-bts-virtual/virtual_um.c b/src/osmo-bts-virtual/virtual_um.c index e8d42529..fd0940f0 100644 --- a/src/osmo-bts-virtual/virtual_um.c +++ b/src/osmo-bts-virtual/virtual_um.c @@ -66,6 +66,11 @@ struct virt_um_inst *virt_um_init(void *ctx, char *tx_mcast_group, uint16_t tx_m struct virt_um_inst *vui = talloc_zero(ctx, struct virt_um_inst); vui->mcast_sock = mcast_bidir_sock_setup(ctx, tx_mcast_group, tx_mcast_port, rx_mcast_group, rx_mcast_port, 1, virt_um_fd_cb, vui); + if (!vui->mcast_sock) { + perror("Unable to create VirtualUm multicast socket"); + talloc_free(vui); + return NULL; + } vui->recv_cb = recv_cb; return vui; |