Hi, We are using the non blocking IO(select) for testing DTLS and testing it on Windows with openssl-1.0.0d.
We observe that when we call SSL_connect, it returns us -1 (as expected because operation should be in progress) and then when this return code is passed to SSL_get_error() function we expect that it would return SSL_WANT_READ but it passes us SSL_ERROR_SYSCALL. This happens only on Windows OS. On Linux the same program works fine as the call rightly returns us SSL_WANT_READ and then SSL_SUCCESS to complete the connection. To illustrate attaching the program we use to test on Linux and Windows OS. Attached is a tar ball which contains the VC project with sample program "simple_dtls_udp_echo.c" at the root. Note: This program acts only as client. Server you can run on Linux as given in the post http://www.mail-archive.com/openssl-dev@openssl.org/msg29413.html If you want to directly test then build the project in Visula studio and go to windows/vc_proj/Debug/ and run ./dtls.exe <server IP> <server port> (copy certificates and keys in this directory) If you want to make changes then open the project solution windows/vc_proj/dtls.sln in Visual Studio 2003 and change the path for the openssl library and include files and rebuild. (if you need any other files let me know I will send you email separately as this forum has some attachment size limit). If you run the same program on Linux then it will work fine and it will make the connection successfully. To compile on Linux : gcc -DLINUX simple_dtls_udp_echo.c -o simple_s -I /home/buildboy/Openssl/openssl-1.0.0d//include -l pthread -l dl /home/buildboy/Openssl/openssl-1.0.0d/libssl.a /home/buildboy/Openssl/openssl-1.0.0d//libcrypto.a --Nilesh. Stratacache Inc.(Santa Clara Office) Systems Architect O: 408-844-9810(2110) M: 408-202-5401
dtls.tar.gz
Description: GNU Zip compressed data