*** 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 + + // 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");