openssl中的多线程s_client

时间:2015-05-07 05:24:59

标签: c multithreading ssl openssl segmentation-fault

我想在openssl s_client中启用多线程。基本上,我想运行,当我运行s_client程序时,在5个不同的线程上进行5次不同的握手。

目前,这就是我的目标。

$ apps/openssl s_client -connect <host>:<port> -multithread

所以,如果需要启用多线程,我会接受名为switch的{​​{1}}并在-multithread中将其设置为true。

现在,this program中的行apps/s_client.c1005处理请求和握手。所以,我创建了一个从19231005的内部函数,并尝试在不同的线程中运行该函数。

即,

1923

这是函数内部的函数(父函数为int function_handshake() { OpenSSL_add_ssl_algorithms(); SSL_load_error_strings(); .... .... apps_shutdown(); OPENSSL_EXIT(ret); } ) 完成此功能后,我会运行此main循环来创建某个for

number_of_threads

for(current_thread_count=0; current_thread_count < number_of_threads; current_thread_count++) { init_locks(); thread_error = pthread_create(&(tid[current_thread_count]), NULL, function_handshake, NULL); if(thread_error!=0) { printf("Can't create thread, [%s]\n", strerror(thread_error)); goto end; } printf("----------thread created------------\n\n"); thread_error = pthread_join(tid[current_thread_count], NULL); if(thread_error!=0) { printf("Can't join thread, [%s]\n", strerror(thread_error)); goto end; } kill_locks(); } init_locks()函数来自here

当我尝试运行这个程序时,它在一次迭代中工作正常 - 第一次握手成功。但是,我在第二次握手时遇到kill_locks()memory errors

请让我知道出现了什么问题,或者是否有更好/其他方式在segmentation faults中进行多线程处理。

0 个答案:

没有答案