Download | Plain Text | Line Numbers


--- tcpserver.c.orig	2006-09-12 18:58:29.000000000 +0200
+++ tcpserver.c	2006-09-12 19:01:47.000000000 +0200
@@ -88,7 +88,7 @@
 
 typedef struct
 {
-  char ip[4];
+  char ip[16];
   pid_t pid;
 } baby;
 
@@ -248,8 +248,13 @@
     long c1=0, cc=0;
     for (u=0; u < limit; u++)
       if (child[u].pid != 0) {
-	if (byte_equal(child[u].ip, 3, remoteip)) cc++;
-	if (byte_equal(child[u].ip, 4, remoteip)) c1++;
+	if (fakev4) {
+	  if (byte_equal(child[u].ip, 15, remoteip)) cc++;
+	}
+	else {
+	  if (byte_equal(child[u].ip, 12, remoteip)) cc++;
+	}
+	if (byte_equal(child[u].ip, 16, remoteip)) c1++;
       }
       if (maxconnc != -1 && (cc >= maxconnc)) flagdeny = 4;
       if (maxconnip != -1 && (c1 >= maxconnip)) flagdeny = 3;
@@ -609,7 +614,7 @@
       default:
         for (u=0; u < limit; u++)
 	  if (child[u].pid == 0) {
-	    byte_copy(child[u].ip,4,remoteip);
+	    byte_copy(child[u].ip,16,remoteip);
 	    child[u].pid = pid;
 	    break;
 	  }