summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2016-10-13 15:47:55 +0200
committerdimitri staessens <[email protected]>2016-10-13 15:47:55 +0200
commit20921b8300d1699d8b0133b3f5fc360fdd99fc0d (patch)
tree5192d254611ec919edf4596152ed5c041463acf2 /src/ipcpd
parent550e7892e47cf8daf351eb773ef3900b33ecabae (diff)
downloadouroboros-20921b8300d1699d8b0133b3f5fc360fdd99fc0d.tar.gz
ouroboros-20921b8300d1699d8b0133b3f5fc360fdd99fc0d.zip
lib: Fix flow deallocation logic
Both the N and N-1 entity must now call flow_dealloc for the port_id to be released.
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/local/main.c2
-rw-r--r--src/ipcpd/shim-eth-llc/main.c2
-rw-r--r--src/ipcpd/shim-udp/main.c2
3 files changed, 6 insertions, 0 deletions
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;