将SSL结构传递给线程

时间:2012-09-24 12:42:17

标签: openssl

我试图将ssl结构传递给一个线程,但使用下面的代码无法实现相同的效果,

   if(SSL_set_fd(ssl, client_s)<0)
    printf("\n error in assigning socket to SSL:");
else
    printf("\n The socket has been assigned to SSL Structure");



    pthread_create (                    /* Create a child thread        */
               &threads,                /* Thread ID (system assigned)  */    
               &attr,                   /* Default thread attributes    */
               my_thread,               /* Thread routine               */
               &ssl);    

}

void *my_thread(void * arg)
{
SSL *ssl1;
ssl1 = *(SSL)arg;
int i=1,err,fh,ret;//i
unsigned int buf_len;

我得到的错误如下:

错误:转换为请求的非标量类型

1 个答案:

答案 0 :(得分:0)

据我所知,你总是得到一个指向SSL结构的指针,所以这是你的更正代码:

pthread_create (                    /* Create a child thread        */
           &threads,                /* Thread ID (system assigned)  */    
           &attr,                   /* Default thread attributes    */
           my_thread,               /* Thread routine               */
           ssl);    

在你的线程函数中:

void *my_thread(void * arg)
{
    SSL *ssl1;
    ssl1 = (SSL*)arg;

你试图在'pthread_create'调用中传递“指向指针”,而在'my_thread'内部投射也是不正确的。