Explorar el Código

* Unrolled some botlink loops
* Now only killing one simul idx at a time


svn: 1040

Bryan Drewery hace 22 años
padre
commit
c2b989f766
Se han modificado 4 ficheros con 22 adiciones y 9 borrados
  1. 1 0
      doc/UPDATES
  2. 1 0
      src/cmds.c
  3. 1 0
      src/main.c
  4. 19 9
      src/net.c

+ 1 - 0
doc/UPDATES

@@ -22,6 +22,7 @@ This is a summary of ChangeLog basically.
 18.Fixed setting ban/invite/exempt on hub, and leafs not setting it.
 18.Fixed setting ban/invite/exempt on hub, and leafs not setting it.
 19.Annoying log -NOTICE- *** should be fixed.
 19.Annoying log -NOTICE- *** should be fixed.
 20.Removed cmd_botinfo.
 20.Removed cmd_botinfo.
+21.Unrolled some loops in the botlink encrypt.
 
 
 1.1.7
 1.1.7
 
 

+ 1 - 0
src/cmds.c

@@ -203,6 +203,7 @@ static void tell_who(struct userrec *u, int idx, int chan)
     }
     }
   }
   }
 }
 }
+#endif /* HUB */
 
 
 static void cmd_whom(struct userrec *u, int idx, char *par)
 static void cmd_whom(struct userrec *u, int idx, char *par)
 {
 {

+ 1 - 0
src/main.c

@@ -184,6 +184,7 @@ static void expire_simuls() {
       if ((now - dcc[idx].simultime) >= 20) { /* expire simuls after 20 seconds (re-uses idx, so it wont fill up) */
       if ((now - dcc[idx].simultime) >= 20) { /* expire simuls after 20 seconds (re-uses idx, so it wont fill up) */
         dcc[idx].simul = -1;
         dcc[idx].simul = -1;
         lostdcc(idx);
         lostdcc(idx);
+        return;		/* only safe to do one at a time */
       }
       }
     }
     }
   }
   }

+ 19 - 9
src/net.c

@@ -1211,7 +1211,8 @@ static int sockread(char *s, int *len)
   return -3;
   return -3;
 }
 }
 
 
-int prand(int *seed, int range)
+__inline__ static int 
+prand(int *seed, int range)
 {
 {
   long long i1;
   long long i1;
 
 
@@ -1219,20 +1220,23 @@ int prand(int *seed, int range)
   i1 = (i1 * 0x08088405 + 1) & 0xFFFFFFFF;
   i1 = (i1 * 0x08088405 + 1) & 0xFFFFFFFF;
   *seed = i1;
   *seed = i1;
   i1 = (i1 * range) >> 32;
   i1 = (i1 * range) >> 32;
+
   return i1;
   return i1;
 }
 }
 
 
 char *botlink_decrypt(int snum, char *src)
 char *botlink_decrypt(int snum, char *src)
 {
 {
   char *line = NULL;
   char *line = NULL;
-  int i;
 
 
   line = decrypt_string(socklist[snum].ikey, src);
   line = decrypt_string(socklist[snum].ikey, src);
   strcpy(src, line);
   strcpy(src, line);
   free(line);
   free(line);
   if (socklist[snum].iseed) {
   if (socklist[snum].iseed) {
-    for (i = 0; i <= 3; i++)
-      *(dword *) & socklist[snum].ikey[i * 4] = prand(&socklist[snum].iseed, 0xFFFFFFFF);
+    *(dword *) & socklist[snum].ikey[0 * 4] = prand(&socklist[snum].iseed, 0xFFFFFFFF);
+    *(dword *) & socklist[snum].ikey[1 * 4] = prand(&socklist[snum].iseed, 0xFFFFFFFF);
+    *(dword *) & socklist[snum].ikey[2 * 4] = prand(&socklist[snum].iseed, 0xFFFFFFFF);
+    *(dword *) & socklist[snum].ikey[3 * 4] = prand(&socklist[snum].iseed, 0xFFFFFFFF);
+
     if (!socklist[snum].iseed)
     if (!socklist[snum].iseed)
       socklist[snum].iseed++;
       socklist[snum].iseed++;
   }
   }
@@ -1242,7 +1246,7 @@ char *botlink_decrypt(int snum, char *src)
 char *botlink_encrypt(int snum, char *src, size_t *len)
 char *botlink_encrypt(int snum, char *src, size_t *len)
 {
 {
   char *srcbuf = NULL, *buf = NULL, *line = NULL, *eol = NULL, *eline = NULL;
   char *srcbuf = NULL, *buf = NULL, *line = NULL, *eol = NULL, *eline = NULL;
-  int bufpos = 0, i = 0;
+  int bufpos = 0;
 
 
   srcbuf = calloc(1, *len + 9 + 1);
   srcbuf = calloc(1, *len + 9 + 1);
   strcpy(srcbuf, src);
   strcpy(srcbuf, src);
@@ -1256,8 +1260,11 @@ char *botlink_encrypt(int snum, char *src, size_t *len)
     *eol++ = 0;
     *eol++ = 0;
     eline = encrypt_string(socklist[snum].okey, line);
     eline = encrypt_string(socklist[snum].okey, line);
     if (socklist[snum].oseed) {
     if (socklist[snum].oseed) {
-      for (i = 0; i <= 3; i++)
-        *(dword *) & socklist[snum].okey[i * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[0 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[1 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[2 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[3 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+
       if (!socklist[snum].oseed)
       if (!socklist[snum].oseed)
         socklist[snum].oseed++;
         socklist[snum].oseed++;
     }
     }
@@ -1272,8 +1279,11 @@ char *botlink_encrypt(int snum, char *src, size_t *len)
   if (line[0]) {
   if (line[0]) {
     eline = encrypt_string(socklist[snum].okey, line);
     eline = encrypt_string(socklist[snum].okey, line);
     if (socklist[snum].oseed) {
     if (socklist[snum].oseed) {
-      for (i = 0; i <= 3; i++)
-        *(dword *) & socklist[snum].okey[i * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[0 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[1 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[2 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+      *(dword *) & socklist[snum].okey[3 * 4] = prand(&socklist[snum].oseed, 0xFFFFFFFF);
+
       if (!socklist[snum].oseed)
       if (!socklist[snum].oseed)
         socklist[snum].oseed++;
         socklist[snum].oseed++;
     }
     }