summaryrefslogtreecommitdiff
path: root/netcon/NetconEthernetTap.cpp
diff options
context:
space:
mode:
authorJoseph Henry <joseph.henry@zerotier.com>2015-09-11 14:12:27 -0400
committerJoseph Henry <joseph.henry@zerotier.com>2015-09-11 14:12:27 -0400
commit776f93e7be1bfe2642a2d009c6dfda321006e31c (patch)
tree3558a623d93b5de845514b838f2db4b12c82bbfb /netcon/NetconEthernetTap.cpp
parent5a5a513b1846210baf1036b194e43138da64bba7 (diff)
downloadinfinitytier-776f93e7be1bfe2642a2d009c6dfda321006e31c.tar.gz
infinitytier-776f93e7be1bfe2642a2d009c6dfda321006e31c.zip
closeConnection / closeClient changes
Diffstat (limited to 'netcon/NetconEthernetTap.cpp')
-rw-r--r--netcon/NetconEthernetTap.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/netcon/NetconEthernetTap.cpp b/netcon/NetconEthernetTap.cpp
index 0bcbf0a3..1def4791 100644
--- a/netcon/NetconEthernetTap.cpp
+++ b/netcon/NetconEthernetTap.cpp
@@ -195,8 +195,14 @@ NetconClient *NetconEthernetTap::getClientByPCB(struct tcp_pcb *pcb)
void NetconEthernetTap::closeClient(NetconClient *client)
{
- // erase from clients vector
- client->closeClient();
+ NetconConnection *temp_conn;
+ closeConnection(client->rpc);
+ for(size_t i=0; i<client->connections.size(); i++) {
+ temp_conn = client->connections[i];
+ closeConnection(client->connections[i]);
+ delete temp_conn;
+ }
+ delete client;
}
void NetconEthernetTap::closeConnection(NetconConnection *conn)
@@ -434,8 +440,7 @@ void NetconEthernetTap::nc_err(void *arg, err_t err)
NetconEthernetTap *tap = l->tap;
NetconConnection *c = tap->getConnectionByThisFD(tap->_phy.getDescriptor(l->sock));
if(c) {
- l->tap->closeConnection(c);
- //tcp_close(c->pcb);
+ tap->closeConnection(c);
}
else {
// can't locate connection object for PCB