-- Leo's gemini proxy

-- Connecting to git.thebackupbox.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

repo: urcd
action: commit
revision:
path_from:
revision_from: 0630b55b38eb5262aadce87b43a76b8ca735a8a2:
path_to:
revision_to:

git.thebackupbox.net

urcd

git://git.thebackupbox.net/urcd

commit 0630b55b38eb5262aadce87b43a76b8ca735a8a2
Author: root <root@ip-10-156-95-218.(none)>
Date:   Thu Aug 8 18:42:19 2013 +0000

    [urc][security] randomize schedule during low latency

diff --git a/src/urcd.pyx b/src/urcd.pyx

index 778d44bba604eadee553399f402a9197cd44f54b..

index ..69f081af993935f6b4f56f6c1e4dac5892add728 100644

--- a/src/urcd.pyx
+++ b/src/urcd.pyx
@@ -389,9 +389,10 @@ while 1:
     ### ERR_UKNOWNCOMMAND ###
     else: try_write(wr,':'+serv+' 421 '+str({str():buffer})[6:-2].replace("\\'","'").replace('\\\\','\\')+'\n')

-  while server_revents((choice(bytes)[1]<<10)*0.01) and not client_revents(0): ### may reduce some side channels ###
+  while server_revents(0) and not client_revents(0): ### may reduce some side channels ###
     buffer = try_read(sd,2+16+8+1024)[2+16+8:].split('\n',1)[0] if URCHUB else try_read(sd,1024).split('\n',1)[0]
     if not buffer: continue
+    server_revents((choice(bytes)[1]<<10)*0.01)
     buffer = re_BUFFER_CTCP_DCC('',buffer) + '\x01' if '\x01ACTION ' in buffer.upper() else buffer.replace('\x01','')
     if not COLOUR: buffer = re_BUFFER_COLOUR('',buffer)
     if not UNICODE:
diff --git a/src/urchubstream.c b/src/urchubstream.c

index fe81acf3e19ad4534f4878a5a401fd468966a333..

index ..474ac3992f368e4c6dd251a6ddb02824dadf4da2 100644

--- a/src/urchubstream.c
+++ b/src/urchubstream.c
@@ -34,6 +34,10 @@ main(int argc, char **argv)
     exit(64);
   }

+  int devurandomfd = open("/dev/urandom",O_RDONLY);
+  if (devurandomfd<0) exit(255);
+  unsigned char byte[1];
+
   int rd = 0, wr = 1, sd = -1;
   if (getenv("TCPCLIENT")){ rd = 6; wr = 7; }

@@ -95,16 +99,18 @@ main(int argc, char **argv)
         i = read(rd,buffer+n,l-n);
         if (i<1) sock_close(9);
         n += i;
-      } if (sendto(sd,buffer,n,0,(struct sockaddr *)&hub,sizeof(hub))<0) usleep(250000);
+      } if (sendto(sd,buffer,n,0,(struct sockaddr *)&hub,sizeof(hub))<0) usleep(262144);

     }

-    while (poll(fds+1,1,0))
+    while ((poll(fds,2,0)) && (!fds[0].revents))
     {
       n = read(sd,buffer,2+16+8+1024);
       if (n<1) sock_close(10);
+      if (read(devurandomfd,byte,1)<1) sock_close(11);
+      poll(fds+1,1,byte[0]<<3);
       if (n!=2+16+8+buffer[0]*256+buffer[1]) continue;
-      if (write(wr,buffer,n)<0) sock_close(11);
+      if (write(wr,buffer,n)<0) sock_close(12);
     }

   }

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 17:30:35 2024