URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 73080
[ Назад ]

Исходное сообщение
"не собирается Exim с поддржкой TLS"

Отправлено Александр , 23-Мрт-07 15:01 
что то не ладное в датском королевстве, в смысле с Exim-ом, творится

сперва новый Exim 4.66 категорически не захотел собираться,
ругаясь на некие неопознанные функции NIS
пришлось пересобирать с опцией WITHOUT_NIS

недавно обновилась openssl (9.7e), пробую пересобрать ехим, вылетают ошибки:

cc tls.c                                                              
In file included from tls.c:86:                                        
tls-openssl.c: In function `tls_init':                                
tls-openssl.c:346: error: wrong type argument to unary exclamation mark
*** Error code 1                                                      

пересобираю с опцией WITHOUT_TLS, все проходит        

сразу скажу - дело именно в новой версии openssl, на второй машине, где порты не успели обновиться, все собирается как надо.

NIS меня не трогает, но вот без TLS как то не хочется            


Содержание

Сообщения в этом обсуждении
"не собирается Exim с поддржкой TLS"
Отправлено Александр , 23-Мрт-07 20:12 
>
>cc tls.c
>In file included from tls.c:86:
>tls-openssl.c: In function `tls_init':
>tls-openssl.c:346: error: wrong type argument to unary exclamation mark
>*** Error code 1

в 346-ой строке tls-openssl.c мы видим

if (!(SSL_CTX_set_info_callback(ctx, (void (*)())info_callback)))
  return tls_error(US"SSL_CTX_set_info_callback", host);        

если это условие закомментировать, exim соберется (и на первый взгляд даже работает:-)
но наверное это не совсем правильно будет.

в openssl 0.9.8d функция SSL_CTX_set_info_callback отсутствует,
а в 0.9.8е - есть (в файле ssl_sess.c:803)

void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl,int type,int val))
{ ctx->info_callback=cb; }        

ясно, что в ехиме эта функция вызывается с ошибкой, но где собака порыта, не вижу
может кто из знатоков С укажет.
                              


"не собирается Exim с поддржкой TLS"
Отправлено dawnshade , 24-Мрт-07 10:00 
>>
>>cc tls.c
>>In file included from tls.c:86:
>>tls-openssl.c: In function `tls_init':
>>tls-openssl.c:346: error: wrong type argument to unary exclamation mark
>>*** Error code 1
>
>в 346-ой строке tls-openssl.c мы видим
>
>if (!(SSL_CTX_set_info_callback(ctx, (void (*)())info_callback)))
>  return tls_error(US"SSL_CTX_set_info_callback", host);
>
>если это условие закомментировать, exim соберется (и на первый взгляд даже работает:-)
>
>но наверное это не совсем правильно будет.
>
>в openssl 0.9.8d функция SSL_CTX_set_info_callback отсутствует,
>а в 0.9.8е - есть (в файле ssl_sess.c:803)
>
>void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl,int type,int val))
> { ctx->info_callback=cb; }        
>
>ясно, что в ехиме эта функция вызывается с ошибкой, но где собака
>порыта, не вижу
>может кто из знатоков С укажет.
>

http://article.gmane.org/gmane.mail.exim.user/70815


"не собирается Exim с поддржкой TLS"
Отправлено Александр , 24-Мрт-07 16:06 
if (!(SSL_CTX_set_info_callback(ctx, (void (*)())info_callback)))
  return tls_error(US"SSL_CTX_set_info_callback", host);

>
>http://article.gmane.org/gmane.mail.exim.user/70815

по данной ссылке (http://www.exim.org/bugzilla/attachment.cgi?id=78&action=view)
обнаружен следующий патч:

-if (!(SSL_CTX_set_info_callback(ctx, (void (*)())info_callback)))
-  return tls_error(US"SSL_CTX_set_info_callback", host);
+SSL_CTX_set_info_callback(ctx, (void (*)())info_callback);

может быть дело в том, что функция SSL_CTX_set_info_callback имеет тип void,
т.е. не возвращает никакого значения и попытка в операторе if интерпретировать
результат ее вызова, как логическую величину, как раз и вызывает ошибку

будем использовать патч и ждать официального исправления (в портах или в ехиме)


"не собирается Exim с поддржкой TLS"
Отправлено dawnshade , 24-Мрт-07 16:43 
>будем использовать патч и ждать официального исправления (в портах или в ехиме)
>


в 67 будет включено