Hello,

When you try to establish DTLS connection you should use timeouts as said in 
RFC. DTLS uses socket's timeouts. Windows sockets have some differences in 
"timeout API", but DTLS does not consider them. So when you set timeouts 
with BIO_ctrl() and BIO_CTRL_DGRAM_SET_RECV_TIMEOUT or 
BIO_CTRL_DGRAM_SET_SEND_TIMEOUT it does not work properly.

Differences in "timeout API":

1. If recv(...) or send(...) fails due to timeout WSAGetLastError() returns 
WSAETIMEDOUT, but not EAGAIN. But DTLS checks for EAGAIN. So, for DTLS 
timeout does not happen. See dgram_ctrl(...) function in bss_dgram.c file 
for commands BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP and 
BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP.

2. setsockopt(...) function with  SO_RCVTIMEO and SO_SNDTIMEO commands 
requires "unsigned long" type as time value. And time should be in 
milliseconds. May be on Win platforms DTLS should use "sizeof(unsigned 
long)" as last parameter to setsockopt(...) in dgram_ctrl(...) function in 
bss_dgram.c file for BIO_CTRL_DGRAM_SET_*_TIMEOUT commands.

OpenSSL version:
OpenSSL 0.9.8g 19 Oct 2007
built on: Tue Dec 11 08:25:22 2007
platform: VC-WIN32
options:  bn(64,32) md2(int) rc4(idx,int) des(idx,cisc,4,long) idea(int)
blowfish(idx)
compiler: cl  /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy
/nologo -DOPENSSL_SYSNAME_WI
N32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE
-D_C
RT_NONSTDC_NO_DEPRECATE -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_A
SM -DOPENSSL_BN_ASM_PART_WORDS -DMD5_ASM -DSHA1_ASM -DRMD160_ASM -DOPENSSL_USE_A
PPLINK -I.
/Fdout32dll -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5
-DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENG
INE
OPENSSLDIR: "c:/some/openssl/dir/ssl"

OS: Windows XP SP2 32bit
Compiler: Visual C++ 2005 Express Edition
Hardware: AMD Athlon 64 X2

Pavel

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to