что то не ладное в датском королевстве, в смысле с 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 как то не хочется
>
>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; }ясно, что в ехиме эта функция вызывается с ошибкой, но где собака порыта, не вижу
может кто из знатоков С укажет.
>>
>>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; }
>
>ясно, что в ехиме эта функция вызывается с ошибкой, но где собака
>порыта, не вижу
>может кто из знатоков С укажет.
>
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 интерпретировать
результат ее вызова, как логическую величину, как раз и вызывает ошибкубудем использовать патч и ждать официального исправления (в портах или в ехиме)
>будем использовать патч и ждать официального исправления (в портах или в ехиме)
>
в 67 будет включено