*** stunnel-3.14/ssl.c  Mon Feb  5 06:08:15 2001
--- bandwidth_limit/ssl.c       Mon May 21 13:55:41 2001
***************
*** 18,23 ****
--- 18,29 ----
   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   */

+ #include <time.h>
+
+ // sleep 100000 nanoseconds per byte, so 10,000 bytes/second max
+ const unsigned long sleep_nanoseconds_per_byte = 100000L;
+ const unsigned long nanoseconds_per_second = 1000000000L;
+
  /* For US citizens having problems with patents, undefined by default */
  /* Uncomment the next line to disable RSA support */
  /* #define NO_RSA */
***************
*** 657,662 ****
--- 663,674 ----
                  goto error;
              }
              if(num) {
+                               struct timespec t1;
+                               unsigned long nanoseconds = sleep_nanoseconds_per_byte * (unsigned long)num;
+                               t1.tv_sec = (time_t)(nanoseconds / nanoseconds_per_second);
+                               t1.tv_nsec = nanoseconds % nanoseconds_per_second;
+                               nanosleep(&t1, NULL);
+
                  memcpy(ssl_buff, ssl_buff+num, ssl_ptr-num);

                  if (ssl_ptr ==BUFFSIZE) check_SSL_pending = 1;
***************
*** 720,725 ****
--- 732,743 ----
                  sockerror("read");
                  goto error;
              } else if (num > 0) {
+                               struct timespec t1;
+                               unsigned long nanoseconds = sleep_nanoseconds_per_byte * (unsigned long)num;
+                               t1.tv_sec = (time_t)(nanoseconds / nanoseconds_per_second);
+                               t1.tv_nsec = nanoseconds % nanoseconds_per_second;
+                               nanosleep(&t1, NULL);
+
                  sock_ptr += num;
              } else { /* close */
                  log(LOG_DEBUG, "Socket closed on read");


