Browse Source

closeConnection / closeClient changes

Joseph Henry 10 years ago
parent
commit
776f93e7be
1 changed files with 9 additions and 4 deletions
  1. 9 4
      netcon/NetconEthernetTap.cpp

+ 9 - 4
netcon/NetconEthernetTap.cpp

@@ -195,8 +195,14 @@ NetconClient *NetconEthernetTap::getClientByPCB(struct tcp_pcb *pcb)
 
 
 void NetconEthernetTap::closeClient(NetconClient *client)
 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)
 void NetconEthernetTap::closeConnection(NetconConnection *conn)
@@ -434,8 +440,7 @@ void NetconEthernetTap::nc_err(void *arg, err_t err)
 	NetconEthernetTap *tap = l->tap;
 	NetconEthernetTap *tap = l->tap;
 	NetconConnection *c = tap->getConnectionByThisFD(tap->_phy.getDescriptor(l->sock));
 	NetconConnection *c = tap->getConnectionByThisFD(tap->_phy.getDescriptor(l->sock));
   if(c) {
   if(c) {
-    l->tap->closeConnection(c);
-		//tcp_close(c->pcb);
+    tap->closeConnection(c);
   }
   }
   else {
   else {
     // can't locate connection object for PCB
     // can't locate connection object for PCB