Browse Source

Minor cleanup

Joseph Henry 9 years ago
parent
commit
80a73cb14b
4 changed files with 17 additions and 16 deletions
  1. 0 2
      netcon/Intercept.c
  2. 2 0
      netcon/Intercept.h
  3. 15 14
      netcon/NetconEthernetTap.cpp
  4. BIN
      netcon/libintercept.so.1.0

+ 0 - 2
netcon/Intercept.c

@@ -103,9 +103,7 @@ void load_symbols(void);
 void set_up_intercept();
 int checkpid();
 
-#define BUF_SZ                    32
 #define SERVICE_CONNECT_ATTEMPTS  30
-#define ERR_OK                    0
 
 ssize_t sock_fd_read(int sock, void *buf, ssize_t bufsize, int *fd);
 

+ 2 - 0
netcon/Intercept.h

@@ -31,6 +31,8 @@
 
 #include <sys/socket.h>
 
+#define BUF_SZ                  32
+#define ERR_OK                  0
 
 /* Userland RPC codes */
 #define RPC_UNDEFINED			 			0

+ 15 - 14
netcon/NetconEthernetTap.cpp

@@ -53,7 +53,6 @@
 #define ZT_LWIP_TCP_TIMER_INTERVAL 		10
 #define STATUS_TMR_INTERVAL						500 // How often we check connection statuses
 
-
 namespace ZeroTier {
 
 NetconEthernetTap::NetconEthernetTap(
@@ -361,16 +360,16 @@ void NetconEthernetTap::threadMain()
 				that the client has closed their end and we can close ours */
 				for(size_t i = 0; i<tcp_connections.size(); i++) {
 					if(tcp_connections[i]->listening) {
-							char c;
-							if (read(_phy.getDescriptor(tcp_connections[i]->dataSock), &c, 1) < 0) {
-								// Still in listening state
-							}
-							else {
-								// Here we should handle the case there there is incoming data (?)
-								fprintf(stderr, "Listening socketpair closed. Removing RPC connection (%d)\n",
-									_phy.getDescriptor(tcp_connections[i]->dataSock));
-								closeConnection(tcp_connections[i]);
-							}
+						char c;
+						if (read(_phy.getDescriptor(tcp_connections[i]->dataSock), &c, 1) < 0) {
+							// Still in listening state
+						}
+						else {
+							// Here we should handle the case there there is incoming data (?)
+							fprintf(stderr, "Listening socketpair closed. Removing RPC connection (%d)\n",
+								_phy.getDescriptor(tcp_connections[i]->dataSock));
+							closeConnection(tcp_connections[i]);
+						}
 					}
 				}
 			}
@@ -382,13 +381,15 @@ void NetconEthernetTap::threadMain()
 				}
 				if(!associated){
 					// No TCP connections are associated, this is a candidate for removal
-					char c;
-					if(read(_phy.getDescriptor(rpc_sockets[i]),&c,1) < 0) {
+					unsigned char tmpbuf[BUF_SZ];
+					if(read(_phy.getDescriptor(rpc_sockets[i]),&tmpbuf,BUF_SZ) < 0) {
 						closeClient(rpc_sockets[i]);
 					}
 					else {
 							// Handle RPC call, this is rare
-							// phyOnUnixData(PhySocket *sock,void **uptr,void *data,unsigned long len)
+							fprintf(stderr, "run(): RPC read during connection check\n");
+							exit(0);
+							phyOnUnixData(rpc_sockets[i],NULL,&tmpbuf,BUF_SZ);
 					}
 				}
 			}

BIN
netcon/libintercept.so.1.0