> This problem has been observed on multiple platforms (Windows, Linux)
> using openssl-0.9.8f.
>
> When sending application data of size larger than current MTU, the
> function dtls1_write_app_data_bytes attempts to fragment the data into
> MTU-sized chunks. This is of questionable utility, but results in very
> bad behavior due to incorrect calculation of remaining data to send.
> The return value of SSL_write() is also wrong if
> SSL_MODE_ENABLE_PARTIAL_WRITE has been selected.
>
> The root of the problem is that dtls1_write_bytes returns the total
> number of bytes in the buffer that have been sent so far (including
> previous fragments), but the return value is used as the number of bytes
> newly sent. Following the values n, tot, and i through the loop:
> (without ENABLE_PARTIAL_WRITE)
>
> init:
> n = 4000 bytes to send; mtu = 1472
>
> after 1 send:
> i = 1472; tot = 1472; n = 4000-1472 = 2528
>
> after 2 sends:
> i = 2944; tot = 1472 + 2944 = 4416; n = 2528 - 2944 = -416 (actually,
> 4294966880 because n is unsigned)
>
> This will take some time to terminate for the loop condition "while (n)
> { ... }". The attached patch is one possible way to address the problem.
Addressed in 0.9.8i. A.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]