Forwarded to openssl-users for discussion
Best regards,
Lutz
--
Lutz Jaenicke jaeni...@openssl.org
OpenSSL Project http://www.openssl.org/~jaenicke/
--- Begin Message ---
Dear OpenSSL developers
About the following source,I have 2 questions:
1.In OpenSSL library 0.9.8d, when executing more than 2 threads at the
same time, the following error sometimes appears:
SSL_connect error, ip=192.168.1.xxx,err:error:00000001:lib(0):func(0):reason(1)
why?
2. But in OpenSSL OpenSSL1.0.1c, the error never happened.I want know the
diference
between the two version OpenSSL lib,Can you help me?
----------------------------------------------------------------------------------
main()
{
SSL_library_init();
SSL_load_error_strings();
m_ctx = SSL_CTX_new(TLSv1_method());
SSL_CTX_set_options(m_ctx, SSL_OP_ALL);
mutex_buf = (MUTEX_TYPE *)malloc(CRYPTO_num_locks( ) * sizeof(MUTEX_TYPE));
if (!mutex_buf) {
return 0;
}
for (i = 0; i < CRYPTO_num_locks( ); i++) {
MUTEX_SETUP(mutex_buf[i]);
}
CRYPTO_set_id_callback(id_function);
CRYPTO_set_locking_callback(locking_function);
CRYPTO_set_dynlock_create_callback(dyn_create_function);
CRYPTO_set_dynlock_lock_callback(dyn_lock_function);
CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function);
for(nIndex = 0; nIndex < nThreadNum; nIndex++)
{
nErrorNo = pthread_create(&thread_id[nIndex], NULL, ThreadProcess,
&diskArray[nIndex] );
......
}
}
ThreadProcess()
{
call socket();
set non-block;
call connect();
call select();
call BIO_new_socket();
call SSL_new();
call SSL_set_bio();
while( TRUE != nEndFlag )
{
nStatus = SSL_connect(pstSocketInfo->m_ssl);
if(nStatus <= 0)
{
nErrorNo = SSL_get_error(pstSocketInfo->m_ssl, nStatus);
if((SSL_ERROR_WANT_WRITE == nErrorNo)||(SSL_ERROR_WANT_READ ==
nErrorNo))
{
Sleep(1000);
nTrySSLConTimes++;
if ( MAX_SSL_CON_TRY_TIMES < nTrySSLConTimes )
{
CleanSocket( pstSocketInfo );
return ERR;
}
continue;
}
else
{
★★★★★★★★★★★★★★★★★★★★★★★★★★★
printf("[ID:%04lx]SSL_connect error, ip=%s, err:
%s\n",id_function(),szIPStr,
ERR_error_string(nErrorNo, NULL));
CleanSocket( pstSocketInfo );
return ERR;
★★★★★★★★★★★★★★★★★★★★★★★★★★★
}
}
else
{
nEndFlag = TRUE;
}
}
}
best regards
liuyb
--- End Message ---