Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CURLOPT_REQUEST_TARGET constant #2961

Closed
wants to merge 2 commits into from
Closed

Add CURLOPT_REQUEST_TARGET constant #2961

wants to merge 2 commits into from

Conversation

BenMorel
Copy link
Contributor

@BenMorel BenMorel commented Dec 6, 2017

@@ -1370,6 +1370,10 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLOPT_TCP_FASTOPEN);
#endif

#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET);
#endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will also need handling in _php_curl_setopt.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, fixed!

@nikic
Copy link
Member

nikic commented Dec 16, 2017

Looking through the page you linked, there are a coupled more options that have been added since 7.49.0 (which I assume is the last time we synced options): CURLOPT_KEEP_SENDING_ON_ERROR, CURLOPT_PRE_PROXY, lots of CURLOPT_PROXY_*, CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPT_SUPPRESS_CONNECT_HEADERS, CURLOPT_SOCKS5_AUTH, CURLOPT_MIMEPOST, CURLOPT_SSH_COMPRESSION.

I think it would be great to add all options at once, so we don't miss anything when adding them piece-wise.

@BenMorel
Copy link
Contributor Author

Hi nikic, that would be a good idea indeed. I wrote a quick script to compare the options present in the PHP source file, and in the cURL listing page.

There are actually many more CURLOPT_* options missing, dating back as far as cURL 7.1:

constant                           introduced in
CURLOPT_WRITEINFO                  7.1
CURLOPT_ERRORBUFFER                7.1
CURLOPT_PROGRESSDATA               7.1
CURLOPT_HTTPPOST                   7.1    (deprecated)
CURLOPT_HTTPREQUEST                7.1
CURLOPT_NOTHING                    7.1.1  (removed)
CURLOPT_POSTFIELDSIZE              7.2
CURLOPT_PASSWDDATA                 7.4.2  (removed)
CURLOPT_CLOSEPOLICY                7.7    (deprecated)
CURLOPT_CLOSEFUNCTION              7.7    (removed)
CURLOPT_DEBUGDATA                  7.9.6
CURLOPT_DEBUGFUNCTION              7.9.6
CURLOPT_WRITEDATA                  7.9.7
CURLOPT_HEADERDATA                 7.10
CURLOPT_SSL_CTX_DATA               7.10.6
CURLOPT_SSL_CTX_FUNCTION           7.10.6
CURLOPT_MAXFILESIZE_LARGE          7.11.0
CURLOPT_INFILESIZE_LARGE           7.11.0
CURLOPT_RESUME_FROM_LARGE          7.11.0
CURLOPT_POSTFIELDSIZE_LARGE        7.11.1
CURLOPT_PASV_HOST                  7.12.1 (removed)
CURLOPT_SOURCE_PREQUOTE            7.12.1
CURLOPT_SOURCE_POSTQUOTE           7.12.1
CURLOPT_SOURCE_HOST                7.12.1
CURLOPT_SOURCE_PORT                7.12.1
CURLOPT_SOURCE_USERPWD             7.12.1
CURLOPT_SOURCE_PATH                7.12.1
CURLOPT_IOCTLFUNCTION              7.12.3
CURLOPT_IOCTLDATA                  7.12.3
CURLOPT_SOURCE_URL                 7.13.0
CURLOPT_SOURCE_QUOTE               7.13.0
CURLOPT_CONV_TO_NETWORK_FUNCTION   7.15.4
CURLOPT_CONV_FROM_UTF8_FUNCTION    7.15.4
CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4
CURLOPT_SOCKOPTDATA                7.16.0
CURLOPT_SOCKOPTFUNCTION            7.16.0
CURLOPT_OPENSOCKETFUNCTION         7.17.1
CURLOPT_POST301                    7.17.1 (deprecated)
CURLOPT_OPENSOCKETDATA             7.17.1
CURLOPT_COPYPOSTFIELDS             7.17.1
CURLOPT_SEEKDATA                   7.18.0
CURLOPT_SEEKFUNCTION               7.18.0
CURLOPT_SSH_KEYFUNCTION            7.19.6
CURLOPT_SSH_KEYDATA                7.19.6
CURLOPT_RTSPHEADER                 7.20.0
CURLOPT_SERVER_RESPONSE_TIMEOUT    7.20.0
CURLOPT_INTERLEAVEDATA             7.20.0
CURLOPT_INTERLEAVEFUNCTION         7.20.0
CURLOPT_CHUNK_BGN_FUNCTION         7.21.0
CURLOPT_FNMATCH_DATA               7.21.0
CURLOPT_CHUNK_END_FUNCTION         7.21.0
CURLOPT_CHUNK_DATA                 7.21.0
CURLOPT_CLOSESOCKETFUNCTION        7.21.7
CURLOPT_CLOSESOCKETDATA            7.21.7
CURLOPT_XFERINFODATA               7.32.0
CURLOPT_XFERINFOFUNCTION           7.32.0
CURLOPT_STREAM_DEPENDS             7.46.0
CURLOPT_STREAM_DEPENDS_E           7.46.0
CURLOPT_KEEP_SENDING_ON_ERROR      7.51.0
CURLOPT_PROXY_PINNEDPUBLICKEY      7.52.0
CURLOPT_PROXY_TLSAUTH_USERNAME     7.52.0
CURLOPT_PROXY_SSLCERTTYPE          7.52.0
CURLOPT_PRE_PROXY                  7.52.0
CURLOPT_PROXY_CAINFO               7.52.0
CURLOPT_PROXY_CAPATH               7.52.0
CURLOPT_PROXY_CRLFILE              7.52.0
CURLOPT_PROXY_KEYPASSWD            7.52.0
CURLOPT_PROXY_SSLCERT              7.52.0
CURLOPT_PROXY_SSLKEY               7.52.0
CURLOPT_PROXY_SSLKEYTYPE           7.52.0
CURLOPT_PROXY_SSLVERSION           7.52.0
CURLOPT_PROXY_SSL_CIPHER_LIST      7.52.0
CURLOPT_PROXY_SSL_OPTIONS          7.52.0
CURLOPT_PROXY_SSL_VERIFYHOST       7.52.0
CURLOPT_PROXY_SSL_VERIFYPEER       7.52.0
CURLOPT_PROXY_TLSAUTH_PASSWORD     7.52.0
CURLOPT_PROXY_TLSAUTH_TYPE         7.52.0
CURLOPT_ABSTRACT_UNIX_SOCKET       7.53.0
CURLOPT_SUPPRESS_CONNECT_HEADERS   7.54.0
CURLOPT_SOCKS5_AUTH                7.55.0
CURLOPT_SSH_COMPRESSION            7.56.0
CURLOPT_MIMEPOST                   7.56.0

Should I add them all? What about the deprecated and removed ones?

The PHP extension already contains deprecated constants:

constant                           deprecated in
CURLOPT_FILE                       7.9.7
CURLOPT_INFILE                     7.9.7
CURLOPT_DNS_USE_GLOBAL_CACHE       7.11.1
CURLOPT_FTPAPPEND                  7.16.4
CURLOPT_FTPLISTONLY                7.16.4
CURLOPT_FTP_SSL                    7.16.4
CURLOPT_KRB4LEVEL                  7.17.0
CURLOPT_SSLCERTPASSWD              7.17.0
CURLOPT_SSLKEYPASSWD               7.17.0
CURLOPT_PROGRESSFUNCTION           7.32.0
CURLOPT_SOCKS5_GSSAPI_SERVICE      7.49.0

It also currently contains removed constants:

constant                           removed in
CURLOPT_FTPASCII                   7.15.5
CURLOPT_MUTE                       7.15.5
CURLOPT_PASSWDFUNCTION             7.15.5

What should we do with deprecated and removed constants (new & existing)?

Should we leave them all, with the appropriate version checks, so that the PHP extension is unopinionated, and just provides what the current cURL version provides?

Finally, just wondering: isn't it possible to replace all these #if LIBCURL_VERSION_NUM >= with simple #if defined(...) for each constant?

@nikic
Copy link
Member

nikic commented Dec 19, 2017

@BenMorel Thanks for the thorough investigation, I wasn't aware that we're missing so many constants. Can you also provide the script that you used to compute this information? Actually, I think it would be good to add it to the repository, so we can check this regularly.

There are probably some constants that have been omitted intentionally, as they don't make much sense in PHP. For example CURLOPT_PROGRESSDATA is something that's used internally by the implementation, but userland only needs to know about CURLOPT_PROGRESSFUNCTION. There are probably more cases like this.

Regarding deprecated and removed constants: As you note, we already support a number of deprecated/removed options, so it probably makes sense to support everything. Our minimum libcurl version seems to be 7.10.5, so if it was removed before that it's not relevant (probably not much falling in that category).

Finally, just wondering: isn't it possible to replace all these #if LIBCURL_VERSION_NUM >= with simple #if defined(...) for each constant?

Probably the current implementation is used to allow a single version check for multiple constants. I'm not sure if defined() will work, as I don't know whether these are macros or proper symbols.

@BenMorel
Copy link
Contributor Author

Can you also provide the script that you used to compute this information?

Definitely, I was about to create a gist once I know exactly what we're looking for, but maybe I can commit it together with this PR then.

There are probably some constants that have been omitted intentionally, as they don't make much sense in PHP.

In this case I suggest we add a list of ignored constants in the script, to avoid false positives and keep the output clean when the code is up to date.

we already support a number of deprecated/removed options, so it probably makes sense to support everything.

Makes sense. Any idea why the removed ones use #IF CURLOPT_XXX != 0 instead of #if LIBCURL_VERSION_NUM >= ...? See here for an example.

Should I do the same when introducing other removed constants, or should I check LIBCURL_VERSION_NUM >= x and < y? I'm not a C guru, so I don't understand why these constants are even defined in the first place, if not supported by the current cURL version.

Our minimum libcurl version seems to be 7.10.5

Good to know. I can add additional checks for this, then.

Probably the current implementation is used to allow a single version check for multiple constants. I'm not sure if defined() will work, as I don't know whether these are macros or proper symbols.

Ok let's stick with the current implementation then (and the patch will be more readable).

@BenMorel
Copy link
Contributor Author

BenMorel commented Dec 19, 2017

I just committed the script, if you want to have a look.

It checks for 3 things:

  • CURLOPT_* constants documented on the cURL website, but missing from the source
  • CURLOPT_* constants defined in the source, but absent from the cURL documentation (not sure whether this is useful?)
  • CURLOPT_* constants defined in the PHP source, but removed before the minimum supported cURL version (there are currently none)

Here is the current output:

Constants missing from the PHP source:

Constant                              Introduced                Removed            
CURLOPT_HTTPPOST                      7.1           0x070100                       
CURLOPT_HTTPREQUEST                   7.1           0x070100    7.15.5     0x070f05
CURLOPT_ERRORBUFFER                   7.1           0x070100                       
CURLOPT_WRITEINFO                     7.1           0x070100                       
CURLOPT_NOTHING                       7.1.1         0x070101    7.11.0     0x070b00
CURLOPT_POSTFIELDSIZE                 7.2           0x070200                       
CURLOPT_PASSWDDATA                    7.4.2         0x070402    7.15.5     0x070f05
CURLOPT_CLOSEFUNCTION                 7.7           0x070700    7.15.5     0x070f05
CURLOPT_CLOSEPOLICY                   7.7           0x070700                       
CURLOPT_DEBUGDATA                     7.9.6         0x070906                       
CURLOPT_DEBUGFUNCTION                 7.9.6         0x070906                       
CURLOPT_WRITEDATA                     7.9.7         0x070907                       
CURLOPT_HEADERDATA                    7.10          0x070a00                       
CURLOPT_SSL_CTX_FUNCTION              7.10.6        0x070a06                       
CURLOPT_SSL_CTX_DATA                  7.10.6        0x070a06                       
CURLOPT_RESUME_FROM_LARGE             7.11.0        0x070b00                       
CURLOPT_MAXFILESIZE_LARGE             7.11.0        0x070b00                       
CURLOPT_INFILESIZE_LARGE              7.11.0        0x070b00                       
CURLOPT_POSTFIELDSIZE_LARGE           7.11.1        0x070b01                       
CURLOPT_SOURCE_HOST                   7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_SOURCE_PATH                   7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_SOURCE_USERPWD                7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_SOURCE_PORT                   7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_SOURCE_POSTQUOTE              7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_SOURCE_PREQUOTE               7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_PASV_HOST                     7.12.1        0x070c01    7.15.5     0x070f05
CURLOPT_IOCTLFUNCTION                 7.12.3        0x070c03                       
CURLOPT_IOCTLDATA                     7.12.3        0x070c03                       
CURLOPT_SOURCE_QUOTE                  7.13.0        0x070d00    7.15.5     0x070f05
CURLOPT_SOURCE_URL                    7.13.0        0x070d00    7.15.5     0x070f05
CURLOPT_CONV_TO_NETWORK_FUNCTION      7.15.4        0x070f04                       
CURLOPT_CONV_FROM_UTF8_FUNCTION       7.15.4        0x070f04                       
CURLOPT_CONV_FROM_NETWORK_FUNCTION    7.15.4        0x070f04                       
CURLOPT_SOCKOPTFUNCTION               7.16.0        0x071000                       
CURLOPT_SOCKOPTDATA                   7.16.0        0x071000                       
CURLOPT_OPENSOCKETFUNCTION            7.17.1        0x071101                       
CURLOPT_POST301                       7.17.1        0x071101                       
CURLOPT_OPENSOCKETDATA                7.17.1        0x071101                       
CURLOPT_COPYPOSTFIELDS                7.17.1        0x071101                       
CURLOPT_SEEKDATA                      7.18.0        0x071200                       
CURLOPT_SEEKFUNCTION                  7.18.0        0x071200                       
CURLOPT_SSH_KEYFUNCTION               7.19.6        0x071306                       
CURLOPT_SSH_KEYDATA                   7.19.6        0x071306                       
CURLOPT_RTSPHEADER                    7.20.0        0x071400                       
CURLOPT_SERVER_RESPONSE_TIMEOUT       7.20.0        0x071400                       
CURLOPT_INTERLEAVEDATA                7.20.0        0x071400                       
CURLOPT_INTERLEAVEFUNCTION            7.20.0        0x071400                       
CURLOPT_CHUNK_BGN_FUNCTION            7.21.0        0x071500                       
CURLOPT_FNMATCH_DATA                  7.21.0        0x071500                       
CURLOPT_CHUNK_END_FUNCTION            7.21.0        0x071500                       
CURLOPT_CHUNK_DATA                    7.21.0        0x071500                       
CURLOPT_CLOSESOCKETFUNCTION           7.21.7        0x071507                       
CURLOPT_CLOSESOCKETDATA               7.21.7        0x071507                       
CURLOPT_XFERINFODATA                  7.32.0        0x072000                       
CURLOPT_XFERINFOFUNCTION              7.32.0        0x072000                       
CURLOPT_STREAM_DEPENDS                7.46.0        0x072e00                       
CURLOPT_STREAM_DEPENDS_E              7.46.0        0x072e00                       
CURLOPT_KEEP_SENDING_ON_ERROR         7.51.0        0x073300                       
CURLOPT_PROXY_PINNEDPUBLICKEY         7.52.0        0x073400                       
CURLOPT_PROXY_TLSAUTH_USERNAME        7.52.0        0x073400                       
CURLOPT_PROXY_SSLCERTTYPE             7.52.0        0x073400                       
CURLOPT_PRE_PROXY                     7.52.0        0x073400                       
CURLOPT_PROXY_CAINFO                  7.52.0        0x073400                       
CURLOPT_PROXY_CAPATH                  7.52.0        0x073400                       
CURLOPT_PROXY_CRLFILE                 7.52.0        0x073400                       
CURLOPT_PROXY_KEYPASSWD               7.52.0        0x073400                       
CURLOPT_PROXY_SSLCERT                 7.52.0        0x073400                       
CURLOPT_PROXY_SSLKEY                  7.52.0        0x073400                       
CURLOPT_PROXY_SSLKEYTYPE              7.52.0        0x073400                       
CURLOPT_PROXY_SSLVERSION              7.52.0        0x073400                       
CURLOPT_PROXY_SSL_CIPHER_LIST         7.52.0        0x073400                       
CURLOPT_PROXY_SSL_OPTIONS             7.52.0        0x073400                       
CURLOPT_PROXY_SSL_VERIFYHOST          7.52.0        0x073400                       
CURLOPT_PROXY_SSL_VERIFYPEER          7.52.0        0x073400                       
CURLOPT_PROXY_TLSAUTH_PASSWORD        7.52.0        0x073400                       
CURLOPT_PROXY_TLSAUTH_TYPE            7.52.0        0x073400                       
CURLOPT_ABSTRACT_UNIX_SOCKET          7.53.0        0x073500                       
CURLOPT_SUPPRESS_CONNECT_HEADERS      7.54.0        0x073600                       
CURLOPT_SOCKS5_AUTH                   7.55.0        0x073700                       
CURLOPT_SSH_COMPRESSION               7.56.0        0x073800                       
CURLOPT_MIMEPOST                      7.56.0        0x073800                       

Constants defined in the PHP source, but absent from the cURL documentation:

CURLOPT_BINARYTRANSFER
CURLOPT_RETURNTRANSFER
CURLOPT_SAFE_UPLOAD   

So a few pending questions here:

  • Should I leave the second check, that marks the 3 constants above as absent from the online doc? Is this worth something?
  • Is CURLOPT_PROGRESSDATA the only constant that should not be included in the source code, or are there other ones?
  • For removed constants, such as CURLOPT_HTTPREQUEST, should I do this:
#if LIBCURL_VERSION_NUM >= 0x070100 && LIBCURL_VERSION_NUM < 0x070f05 /* Introduced in 7.1, removed in 7.15.5 */
	REGISTER_CURL_CONSTANT(CURLOPT_HTTPREQUEST);
#endif

@nikic
Copy link
Member

nikic commented Dec 19, 2017

Regarding the removed constants, I think we should not bother with these after all: it's just unnecessary effort. I've just bumped the libcurl version to 7.12.1 in 161fd75 and I think we can bump this further to 7.15.5, which is where most of the removals were performed.

Should I leave the second check, that marks the 3 constants above as absent from the online doc? Is this worth something?

Probably not, as these are just PHP-specific options. Alternatively we could have a whitelist for these as well.

Is CURLOPT_PROGRESSDATA the only constant that should not be included in the source code, or are there other ones?

There are definitely others as well, e.g. CURLOPT_WRITEDATA is the same. This probably becomes clear when trying to add them to the setopt function. There are also options like CURLOPT_MAXFILESIZE_LARGE where it would make more sense to automatically fall back to using them if CURLOPT_MAXFILESIZE was provided a too large argument (> LONG_MAX).

@BenMorel
Copy link
Contributor Author

I've just bumped the libcurl version to 7.12.1 in 161fd75 and I think we can bump this further to 7.15.5, which is where most of the removals were performed.

Cool. Should I leave aside those removed in 7.15.5 then?

Probably not, as these are just PHP-specific options. Alternatively we could have a whitelist for these as well.

I'll just remove the check for now.

This probably becomes clear when trying to add them to the setopt function.

I hope it will! I'll do the ones I can do, and may need your help for the rest of them.

@BenMorel
Copy link
Contributor Author

There are also options like CURLOPT_MAXFILESIZE_LARGE where it would make more sense to automatically fall back to using them if CURLOPT_MAXFILESIZE was provided a too large argument (> LONG_MAX).

Do you mean:

if (option == CURLOPT_MAXFILESIZE) {
	if (lval > LONG_MAX) {
		option = CURLOPT_MAXFILESIZE_LARGE;
	}
}

LONG_MAX is 64 bits on my machine though. Should I use INT32_MAX?

@nikic
Copy link
Member

nikic commented Feb 3, 2018

In the interest of moving this forward, I've merged these changes (85021a3 and 5864ab7) and also performed the libcurl version bump (47699a2) to resolve the question of removed constants. The addition of new constants can be handled separately.

Thanks a lot for your work on this! The checking script will be very useful to keep things more synchronized in the future. For reference, the output is now:

Constants missing from the PHP source:

Constant                              Introduced                Removed    
CURLOPT_WRITEINFO                     7.1           0x070100               
CURLOPT_ERRORBUFFER                   7.1           0x070100               
CURLOPT_HTTPPOST                      7.1           0x070100               
CURLOPT_POSTFIELDSIZE                 7.2           0x070200               
CURLOPT_CLOSEPOLICY                   7.7           0x070700               
CURLOPT_DEBUGDATA                     7.9.6         0x070906               
CURLOPT_DEBUGFUNCTION                 7.9.6         0x070906               
CURLOPT_WRITEDATA                     7.9.7         0x070907               
CURLOPT_HEADERDATA                    7.10          0x070a00               
CURLOPT_SSL_CTX_DATA                  7.10.6        0x070a06               
CURLOPT_SSL_CTX_FUNCTION              7.10.6        0x070a06               
CURLOPT_RESUME_FROM_LARGE             7.11.0        0x070b00               
CURLOPT_INFILESIZE_LARGE              7.11.0        0x070b00               
CURLOPT_MAXFILESIZE_LARGE             7.11.0        0x070b00               
CURLOPT_POSTFIELDSIZE_LARGE           7.11.1        0x070b01               
CURLOPT_IOCTLDATA                     7.12.3        0x070c03               
CURLOPT_IOCTLFUNCTION                 7.12.3        0x070c03               
CURLOPT_CONV_FROM_NETWORK_FUNCTION    7.15.4        0x070f04               
CURLOPT_CONV_TO_NETWORK_FUNCTION      7.15.4        0x070f04               
CURLOPT_CONV_FROM_UTF8_FUNCTION       7.15.4        0x070f04               
CURLOPT_SOCKOPTFUNCTION               7.16.0        0x071000               
CURLOPT_SOCKOPTDATA                   7.16.0        0x071000               
CURLOPT_OPENSOCKETFUNCTION            7.17.1        0x071101               
CURLOPT_COPYPOSTFIELDS                7.17.1        0x071101               
CURLOPT_OPENSOCKETDATA                7.17.1        0x071101               
CURLOPT_POST301                       7.17.1        0x071101               
CURLOPT_SEEKDATA                      7.18.0        0x071200               
CURLOPT_SEEKFUNCTION                  7.18.0        0x071200               
CURLOPT_SSH_KEYFUNCTION               7.19.6        0x071306               
CURLOPT_SSH_KEYDATA                   7.19.6        0x071306               
CURLOPT_RTSPHEADER                    7.20.0        0x071400               
CURLOPT_SERVER_RESPONSE_TIMEOUT       7.20.0        0x071400               
CURLOPT_INTERLEAVEFUNCTION            7.20.0        0x071400               
CURLOPT_INTERLEAVEDATA                7.20.0        0x071400               
CURLOPT_CHUNK_BGN_FUNCTION            7.21.0        0x071500               
CURLOPT_CHUNK_END_FUNCTION            7.21.0        0x071500               
CURLOPT_CHUNK_DATA                    7.21.0        0x071500               
CURLOPT_FNMATCH_DATA                  7.21.0        0x071500               
CURLOPT_CLOSESOCKETFUNCTION           7.21.7        0x071507               
CURLOPT_CLOSESOCKETDATA               7.21.7        0x071507               
CURLOPT_XFERINFODATA                  7.32.0        0x072000               
CURLOPT_XFERINFOFUNCTION              7.32.0        0x072000               
CURLOPT_STREAM_DEPENDS                7.46.0        0x072e00               
CURLOPT_STREAM_DEPENDS_E              7.46.0        0x072e00               
CURLOPT_KEEP_SENDING_ON_ERROR         7.51.0        0x073300               
CURLOPT_PROXY_TLSAUTH_USERNAME        7.52.0        0x073400               
CURLOPT_PROXY_KEYPASSWD               7.52.0        0x073400               
CURLOPT_PROXY_TLSAUTH_TYPE            7.52.0        0x073400               
CURLOPT_PROXY_SSLKEY                  7.52.0        0x073400               
CURLOPT_PRE_PROXY                     7.52.0        0x073400               
CURLOPT_PROXY_CAINFO                  7.52.0        0x073400               
CURLOPT_PROXY_CAPATH                  7.52.0        0x073400               
CURLOPT_PROXY_CRLFILE                 7.52.0        0x073400               
CURLOPT_PROXY_PINNEDPUBLICKEY         7.52.0        0x073400               
CURLOPT_PROXY_SSLCERT                 7.52.0        0x073400               
CURLOPT_PROXY_TLSAUTH_PASSWORD        7.52.0        0x073400               
CURLOPT_PROXY_SSLCERTTYPE             7.52.0        0x073400               
CURLOPT_PROXY_SSLKEYTYPE              7.52.0        0x073400               
CURLOPT_PROXY_SSLVERSION              7.52.0        0x073400               
CURLOPT_PROXY_SSL_CIPHER_LIST         7.52.0        0x073400               
CURLOPT_PROXY_SSL_OPTIONS             7.52.0        0x073400               
CURLOPT_PROXY_SSL_VERIFYHOST          7.52.0        0x073400               
CURLOPT_PROXY_SSL_VERIFYPEER          7.52.0        0x073400               
CURLOPT_ABSTRACT_UNIX_SOCKET          7.53.0        0x073500               
CURLOPT_SUPPRESS_CONNECT_HEADERS      7.54.0        0x073600               
CURLOPT_SOCKS5_AUTH                   7.55.0        0x073700               
CURLOPT_SSH_COMPRESSION               7.56.0        0x073800               
CURLOPT_MIMEPOST                      7.56.0        0x073800               
CURLOPT_TIMEVALUE_LARGE               7.59.0        0x073b00               

Constants defined in the PHP source, but absent from the cURL documentation:

CURLOPT_BINARYTRANSFER
CURLOPT_RETURNTRANSFER
CURLOPT_SAFE_UPLOAD   

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants