Bug #69088 [Fbk->Csd]: PHP_MINIT_FUNCTION does not fully initialize cURL on Win32
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)