From 20921b8300d1699d8b0133b3f5fc360fdd99fc0d Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Thu, 13 Oct 2016 15:47:55 +0200 Subject: lib: Fix flow deallocation logic Both the N and N-1 entity must now call flow_dealloc for the port_id to be released. --- src/ipcpd/local/main.c | 2 ++ src/ipcpd/shim-eth-llc/main.c | 2 ++ src/ipcpd/shim-udp/main.c | 2 ++ 3 files changed, 6 insertions(+) (limited to 'src/ipcpd') diff --git a/src/ipcpd/local/main.c b/src/ipcpd/local/main.c index 1ccec0c0..7d23c08d 100644 --- a/src/ipcpd/local/main.c +++ b/src/ipcpd/local/main.c @@ -252,6 +252,8 @@ static int ipcp_local_flow_dealloc(int fd) pthread_rwlock_unlock(&local_data.lock); pthread_rwlock_unlock(&ipcpi.state_lock); + flow_dealloc(fd); + LOG_INFO("Flow with fd %d deallocated.", fd); return 0; diff --git a/src/ipcpd/shim-eth-llc/main.c b/src/ipcpd/shim-eth-llc/main.c index 130f3945..399d3dc8 100644 --- a/src/ipcpd/shim-eth-llc/main.c +++ b/src/ipcpd/shim-eth-llc/main.c @@ -975,6 +975,8 @@ static int eth_llc_ipcp_flow_dealloc(int fd) if (ret < 0) LOG_DBG("Could not notify remote."); + flow_dealloc(fd); + LOG_DBG("Flow with fd %d deallocated.", fd); return 0; diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c index 12f6d82e..7c109a8a 100644 --- a/src/ipcpd/shim-udp/main.c +++ b/src/ipcpd/shim-udp/main.c @@ -1117,6 +1117,8 @@ static int ipcp_udp_flow_dealloc(int fd) close(skfd); + flow_dealloc(fd); + LOG_DBG("Flow with fd %d deallocated.", fd); return 0; -- cgit v1.2.3