[
https://issues.apache.org/jira/browse/PROTON-660?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14144563#comment-14144563
]
Bozo Dragojevic commented on PROTON-660:
----------------------------------------
{quote}
I don't understand the need to undefine symbols - the windows header file that
defines them shouldn't be included in any "include chain", and if it is then
that is a problem. The only files in our code base that should include windows
(or more broadly platform specific headers) is platform.c and c files that are
only compiled on specific platforms. None of the .h files should (need to)
include windows headers.
{quote}
I've got the the bottom of this, and have a cleaner solution, still. The root
cause is that openssl/ssl.h includes
openssl/x509.h that already has the exact same undefine. But that includes
happens before it includes openssl/dtls1.h which pulls in winsock.h that
re-defines the symbols. End effect is, openssl on windows works only if
winsock.h is explicitly included before any openssl header is included -- which
I guess is why only some people see this, some not.
So the real solution is a oneliner in ../platform.h to include winsock.h on
windows. wdyt?
{quote}
The use of strncasecmp() should be abstracted the same way we've abstracted
snprintf() - by adding a definition to platform.h using some implementation
probably in platform.c or util.c
{quote}
I've noticed pn_i_eq_nocase() and just followed suit with pn_i_eq_n_nocase().
So, iiuc, that part is OK, I should just leave openssl.c call strncasecmp() and
add to platform.h a
{code}
#define strncasecmp(a,b) (!pn_i_eq_nocase(a,b))
{code}
> Fix openssl.c build on windows
> ------------------------------
>
> Key: PROTON-660
> URL: https://issues.apache.org/jira/browse/PROTON-660
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: 0.8
> Environment: Windows 7, VS2013
> Reporter: Bozo Dragojevic
> Attachments: 0001-PROTON-660-Fix-openssl.c-build-on-windows.patch,
> 25_openssl_fix_for_windows_CMakeLists.patch,
> 25_openssl_fix_for_windows_data.h.patch,
> 25_openssl_fix_for_windows_platform.h.patch
>
>
> Compiled openssl-1.0.1i from source
> Proton finds it, but openssl.c does not compile without small adjustments.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)