diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-04-08 22:09:57 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-04-10 06:47:28 +0000 |
commit | 0bacc71fc208e5cdf0727de027438b8e901ff666 (patch) | |
tree | c67d11c94438a8fcd147392ea4dcb16e96fad458 /src/datagram.c | |
parent | a2c2b59165ebb63ccca0838922501b717d5233a7 (diff) |
stream/datagram: Consistently use osmo_talloc_replace_string()
during osmo_*_set_addr(), we must make sure to talloc_free() any old
address before copying in the new address. Not all functions did this,
and those that did implemented it manually. Let's use
osmo_talloc_replace_string() which is exactly intended for this case.
Change-Id: Ie1b140a160c66e8b62c745174865d5ba525cb2c2
Diffstat (limited to 'src/datagram.c')
-rw-r--r-- | src/datagram.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/datagram.c b/src/datagram.c index cb2a64f..13f1b5c 100644 --- a/src/datagram.c +++ b/src/datagram.c @@ -39,7 +39,7 @@ struct osmo_dgram_tx { struct osmo_fd ofd; struct llist_head tx_queue; - const char *addr; + char *addr; uint16_t port; char *local_addr; uint16_t local_port; @@ -125,10 +125,7 @@ void osmo_dgram_tx_set_addr(struct osmo_dgram_tx *conn, const char *addr) { - if (conn->addr != NULL) - talloc_free((void *)conn->addr); - - conn->addr = talloc_strdup(conn, addr); + osmo_talloc_replace_string(conn, &conn->addr, addr); conn->flags |= OSMO_DGRAM_CLI_F_RECONF; } @@ -224,7 +221,7 @@ void osmo_dgram_tx_send(struct osmo_dgram_tx *conn, struct osmo_dgram_rx { struct osmo_fd ofd; - const char *addr; + char *addr; uint16_t port; int (*cb)(struct osmo_dgram_rx *conn); void *data; @@ -296,10 +293,7 @@ struct osmo_dgram_rx *osmo_dgram_rx_create(void *crx) void osmo_dgram_rx_set_addr(struct osmo_dgram_rx *conn, const char *addr) { - if (conn->addr != NULL) - talloc_free((void *)conn->addr); - - conn->addr = talloc_strdup(conn, addr); + osmo_talloc_replace_string(conn, &conn->addr, addr); conn->flags |= OSMO_DGRAM_RX_F_RECONF; } |