From 569dccf947b36205d9cc156c231016005b277cdb Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 22 Apr 2010 12:04:36 +0800 Subject: nat: Clear the queued messages at the end It is possible that the calls from the loop would queue more messages for the BSC and then we would have a nice memory leak... Move it to the bottom. --- openbsc/src/nat/bsc_nat.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'openbsc/src/nat/bsc_nat.c') diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c index 623f96f4d..0a0a12521 100644 --- a/openbsc/src/nat/bsc_nat.c +++ b/openbsc/src/nat/bsc_nat.c @@ -437,10 +437,6 @@ static int ipaccess_msc_write_cb(struct bsc_fd *bfd, struct msgb *msg) static void remove_bsc_connection(struct bsc_connection *connection) { struct sccp_connections *sccp_patch, *tmp; - bsc_unregister_fd(&connection->write_queue.bfd); - close(connection->write_queue.bfd.fd); - write_queue_clear(&connection->write_queue); - llist_del(&connection->list_entry); /* stop the timeout timer */ bsc_del_timer(&connection->id_timeout); @@ -457,6 +453,11 @@ static void remove_bsc_connection(struct bsc_connection *connection) /* close endpoints allocated by this BSC */ bsc_mgcp_clear_endpoints_for(connection); + bsc_unregister_fd(&connection->write_queue.bfd); + close(connection->write_queue.bfd.fd); + write_queue_clear(&connection->write_queue); + llist_del(&connection->list_entry); + talloc_free(connection); } -- cgit v1.2.3