Bug #69088 [Fbk->Csd]: PHP_MINIT_FUNCTION does not fully initialize cURL on Win32

From: Date: Sun, 22 Feb 2015 15:43:11 +0000
Subject: Bug #69088 [Fbk->Csd]: PHP_MINIT_FUNCTION does not fully initialize cURL on Win32
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-190891@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69088&edit=1

 ID:                 69088
 Updated by:         ab@php.net
 Reported by:        grant at digitaldj dot net
 Summary:            PHP_MINIT_FUNCTION does not fully initialize cURL on
                     Win32
-Status:             Feedback
+Status:             Closed
 Type:               Bug
 Package:            cURL related
 Operating System:   Windows (all)
 PHP Version:        5.6.6
-Assigned To:        
+Assigned To:        ab
 Block user comment: N
 Private report:     N

 New Comment:

Merged.

Btw looked to some versions back in curl, it seems CURL_GLOBAL_ALL is used in most of the places and
tests. So it should be fine with even older curl versions.

Thanks.


Previous Comments:
------------------------------------------------------------------------
[2015-02-22 13:11:32] grant at digitaldj dot net

Hi

I've created two more pull requests one against PHP-5.5 and another against PHP-5.6.

https://github.com/php/php-src/pull/1113
https://github.com/php/php-src/pull/1112

------------------------------------------------------------------------
[2015-02-22 11:42:56] ab@php.net

After looking at lib/easy.c - agreed, default is CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32 and that's
just one empty call which will be optimized away, so that's fine. I also think it makes sense
to use SSPI. Still two things I'd ask you to do:

- it's probably safer to do curl version check on compile time, as it's unknown what
possible differences older versions have
- please rebase the PR against 5.5 as we use curl 7.40.0 there, too. Or i can backport it later
after merge, actually not a big deal (not sure it'll need to recreate a PR).

With master - probably other topic, but we still use VC11 for it. VC12 should work, however there
are no deps prepared (like you could fetch for VC11 from windows.php.net), so you'll need to do
that yourself. But in general - maybe you could report in some other ticket or on the mailing lists,
what the exact issues you met are.

Thanks.

------------------------------------------------------------------------
[2015-02-22 05:31:09] grant at digitaldj dot net

As for tests, the test script attached to the bug is the only decent way I can think of testing
whether cURL is compiled with USE_WINDOWS_SSPI. Unfortunately, it relies on a remote server.

------------------------------------------------------------------------
[2015-02-22 05:26:29] grant at digitaldj dot net

Hi,

The code is in fact #ifdef'd. The code calls win32_init() but all code within that function is
appropriately #ifdef'd (all of this is in cURL's lib/easy.c).

From a maintainability point of view, going with CURL_GLOBAL_DEFAULT is the best action. Even the
curl binary on Linux initializes with CURL_GLOBAL_DEFAULT.

The alternative however, is to compile cURL without USE_WINDOWS_SSPI. This falls back to the
Unix-method of manually parsing the HTTP Digest Challenge Message. The Windows SSPI code is then
avoided and the behavior of cURL more closely matches that of when running on Unix platforms.

As for master, I'm not sure. I'm having a little trouble getting it to compile with what I
have installed (VC12). But I'll give it my best shot. I've scoured the commits and I
can't see anything that would affect it....unless of course you are compiling cURL without
USE_WINDOWS_SSPI.

Cheers

------------------------------------------------------------------------
[2015-02-21 17:35:34] ab@php.net

@grant, thanks for the patch. I've a couple of questions.

- you say that won't affect any non windows platforms, however the code isn't
#ifdef'ed ... so looks like it could affect other platforms. Refering to http://curl.haxx.se/libcurl/c/curl_global_init.html
, you mean CURL_GLOBAL_DEFAULT will init both CURL_GLOBAL_SSL and win32
- i've checked the same on master, but got no crash there ... wondering if you could check that
as well
- were it possible to add some test for this?

Thanks.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=69088


--
Edit this bug report at https://bugs.php.net/bug.php?id=69088&edit=1


Thread (7 messages)

« previous php.bugs (#190891) next »