|
|
|
|
@ -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
|
|
|
|
|
|