diff options
author | Joseph Henry <joseph.henry@zerotier.com> | 2015-09-11 14:12:27 -0400 |
---|---|---|
committer | Joseph Henry <joseph.henry@zerotier.com> | 2015-09-11 14:12:27 -0400 |
commit | 776f93e7be1bfe2642a2d009c6dfda321006e31c (patch) | |
tree | 3558a623d93b5de845514b838f2db4b12c82bbfb /netcon/NetconEthernetTap.cpp | |
parent | 5a5a513b1846210baf1036b194e43138da64bba7 (diff) | |
download | infinitytier-776f93e7be1bfe2642a2d009c6dfda321006e31c.tar.gz infinitytier-776f93e7be1bfe2642a2d009c6dfda321006e31c.zip |
closeConnection / closeClient changes
Diffstat (limited to 'netcon/NetconEthernetTap.cpp')
-rw-r--r-- | netcon/NetconEthernetTap.cpp | 13 |
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 |