platform/upstream/curl.git
10 years agowarnless: add wrapper function for read and write on Windows
Marc Hoersken [Sun, 16 Feb 2014 10:03:22 +0000 (11:03 +0100)]
warnless: add wrapper function for read and write on Windows

10 years agoexamples: Added IMAP LSUB example
Steve Holme [Sat, 15 Feb 2014 23:33:09 +0000 (23:33 +0000)]
examples: Added IMAP LSUB example

10 years agotool_operate: Changed the required argument check/get to be upfront
Steve Holme [Fri, 14 Feb 2014 22:05:27 +0000 (22:05 +0000)]
tool_operate: Changed the required argument check/get to be upfront

Rather than check for required arguments, and prompt for any host and
proxy passwords, as each operation is performed, changed the code so
all configurations are checked before any operations are performed.

This allows the user to input all the required passwords, for example,
upfront rather than wait for each operation.

10 years agotool_operate: Moved required argument getting into separate function
Steve Holme [Fri, 14 Feb 2014 21:59:51 +0000 (21:59 +0000)]
tool_operate: Moved required argument getting into separate function

10 years agovalgrind: added another test 165 suppression
Dan Fandrich [Sat, 15 Feb 2014 08:27:21 +0000 (09:27 +0100)]
valgrind: added another test 165 suppression

This one is needed with the gcc options -fstack-protector-all -O2
That brings the number of suppressions for test 165 to four, and I
suspect I could find another two missing without trying very hard. I'm
beginning to think suppressions isn't the best way to handle these
kinds of cases.

10 years agotestsuite: more Windows line-endings fixes
Marc Hoersken [Sat, 15 Feb 2014 08:19:27 +0000 (09:19 +0100)]
testsuite: more Windows line-endings fixes

10 years agotest1114: fix line-endings checks on Windows after 75f00de
Marc Hoersken [Sat, 15 Feb 2014 08:14:36 +0000 (09:14 +0100)]
test1114: fix line-endings checks on Windows after 75f00de

10 years agotest1113: fix line-endings checks on Windows after 75f00de5
Marc Hoersken [Sat, 15 Feb 2014 08:12:59 +0000 (09:12 +0100)]
test1113: fix line-endings checks on Windows after 75f00de5

10 years agolib1515.c: Added support for Windows using the Sleep function
Marc Hoersken [Fri, 14 Feb 2014 21:17:54 +0000 (22:17 +0100)]
lib1515.c: Added support for Windows using the Sleep function

10 years agoHTTP tests: use CRLF as header seperator according to RFC 2616
Marc Hoersken [Sat, 1 Feb 2014 13:03:55 +0000 (14:03 +0100)]
HTTP tests: use CRLF as header seperator according to RFC 2616

Updates the test suite to handle binary-mode header output.

10 years agocurl: output protocol headers using binary mode
Marc Hoersken [Sat, 1 Feb 2014 13:02:34 +0000 (14:02 +0100)]
curl: output protocol headers using binary mode

Since protocol headers contain explicit line-endings there should
be no automatic conversion to ASCII text or CRLF line-endings.

This might break third party tools that already depend on this
behaviour. We might need to introduce an option to make this optional.

10 years agoHTTP tests: use CRLF as header seperator according to RFC 2616
Marc Hoersken [Sat, 1 Feb 2014 12:58:41 +0000 (13:58 +0100)]
HTTP tests: use CRLF as header seperator according to RFC 2616

Changes LF to CRLF and disables automatic output conversion.

10 years agotestsuite: use binary output mode for custom curl test tools
Marc Hoersken [Fri, 31 Jan 2014 23:58:58 +0000 (00:58 +0100)]
testsuite: use binary output mode for custom curl test tools

Do not try to convert line-endings to CRLF on Windows by setting stdout
to binary mode, just like the curl tool does if --ascii is not specified.

This should prevent corrupted stdout line-ending output like CRCRLF.

In order to make the previously naive text-aware tests work with
binary mode on Windows, text-mode is disabled for them if it is not
actually part of the test case and line-endings are corrected.

10 years agotestsuite: changed HTTP and RTSP header line-endings to CRLF
Marc Hoersken [Fri, 31 Jan 2014 23:52:08 +0000 (00:52 +0100)]
testsuite: changed HTTP and RTSP header line-endings to CRLF

According to RFC 2616 and RFC 2326 individual protocol elements, like
headers and except the actual content, are terminated by using CRLF.

Therefore the test data files for these protocols need to contain
mixed line-endings if the actual protocol elements use CRLF while
the file uses LF.

10 years agocurl_easy_setopt.3: Fix word order of CURLOPT_PROXY section
Colin Hogben [Fri, 14 Feb 2014 10:35:49 +0000 (10:35 +0000)]
curl_easy_setopt.3: Fix word order of CURLOPT_PROXY section

The word CURLOPT_PROXYPORT became detached from its sentence when the
note about the default was added.

10 years agoOS400: Add new options to RPG binding.
Patrick Monnerat [Fri, 14 Feb 2014 10:13:01 +0000 (11:13 +0100)]
OS400: Add new options to RPG binding.

10 years agovalgrind: added suppression on optimized code
Dan Fandrich [Fri, 14 Feb 2014 07:41:10 +0000 (08:41 +0100)]
valgrind: added suppression on optimized code

gcc 4.7.2 with -O2 will optimize Curl_connect by inlining some
functions two levels deep, which makes the valgrind suppression
fail to match. The underlying reason for these idna suppressions is
a gcc strlen optimization when compiling libidn; compiling it with
-fno-builtin-strlen makes this suppression unnecessary.

10 years agodict: fix memory leak in OOM exit path
Arvid Norberg [Fri, 14 Feb 2014 07:20:59 +0000 (08:20 +0100)]
dict: fix memory leak in OOM exit path

Bug: https://github.com/bagder/curl/pull/90

10 years agoCurl_urldecode: don't allow NULL as receiver
Daniel Stenberg [Thu, 13 Feb 2014 22:57:40 +0000 (23:57 +0100)]
Curl_urldecode: don't allow NULL as receiver

For a function that returns a decoded version of a string, it seems
really strange to allow a NULL pointer to get passed in which then
prevents the decoded data from being returned!

This functionality was not documented anywhere either.

If anyone would use it that way, that memory would've been leaked.

Bug: https://github.com/bagder/curl/pull/90
Reported-by: Arvid Norberg
10 years agoRELEASE-NOTES: synced with 378af08c992
Daniel Stenberg [Thu, 13 Feb 2014 22:35:32 +0000 (23:35 +0100)]
RELEASE-NOTES: synced with 378af08c992

10 years agoConnectionExists: reusing possible HTTP+NTLM connections better
Daniel Stenberg [Wed, 12 Feb 2014 13:15:42 +0000 (14:15 +0100)]
ConnectionExists: reusing possible HTTP+NTLM connections better

Make sure that the special NTLM magic we do is for HTTP+NTLM only since
that's where the authenticated connection is a weird non-standard
paradigm.

Regression brought in 8ae35102c (curl 7.35.0)

Bug: http://curl.haxx.se/mail/lib-2014-02/0100.html
Reported-by: Dan Fandrich
10 years agotransfer: make Expect: 100-continue timeout configurable.
Tiit Pikma [Thu, 13 Feb 2014 09:49:27 +0000 (11:49 +0200)]
transfer: make Expect: 100-continue timeout configurable.

Replaced the #define CURL_TIMEOUT_EXPECT_100 in transfer.c with the
CURLOPT_EXPECT_100_TIMEOUT_MS option to make the timeout configurable.

10 years agoFix compilation with make mingw32
Thomas Braun [Sat, 8 Feb 2014 16:26:53 +0000 (17:26 +0100)]
Fix compilation with make mingw32

The source files from lib/vtls where generated in lib instead of lib/vtls.

Verified-by: Thomas Braun <thomas.braun@virtuell-zuhause.de>
10 years agochunked decoder: track overflows correctly
Daniel Stenberg [Wed, 12 Feb 2014 13:33:17 +0000 (14:33 +0100)]
chunked decoder: track overflows correctly

The code didn't properly check the return codes to detect overflows so
it could trigger incorrectly. Like on mingw32.

Regression introduced in 345891edba (curl 7.35.0)

Bug: http://curl.haxx.se/mail/lib-2014-02/0097.html
Reported-by: LM
10 years agocurl_easy_setopt.3: add CURL_HTTP_VERSION_2_0
Fabian Frank [Tue, 11 Feb 2014 07:29:21 +0000 (23:29 -0800)]
curl_easy_setopt.3: add CURL_HTTP_VERSION_2_0

10 years agoopenssl: honor --[no-]alpn|npn command line switch
Fabian Frank [Tue, 11 Feb 2014 07:05:13 +0000 (23:05 -0800)]
openssl: honor --[no-]alpn|npn command line switch

Disable ALPN or NPN if requested by the user.

10 years agogtls: honor --[no-]alpn command line switch
Fabian Frank [Tue, 11 Feb 2014 06:18:11 +0000 (22:18 -0800)]
gtls: honor --[no-]alpn command line switch

Disable ALPN if requested by the user.

10 years agotests: Disabled broken test 1316
Dan Fandrich [Tue, 11 Feb 2014 20:27:32 +0000 (21:27 +0100)]
tests: Disabled broken test 1316

See http://curl.haxx.se/mail/lib-2014-02/0004.html for a
discussion on the problem.

10 years agoversion: next release will become 7.36.0
Daniel Stenberg [Tue, 11 Feb 2014 10:30:15 +0000 (11:30 +0100)]
version: next release will become 7.36.0

10 years agocurl_easy_setopt.3: add CURLOPT_SSL_ENABLE_ALPN/NPN
Daniel Stenberg [Tue, 11 Feb 2014 06:44:27 +0000 (07:44 +0100)]
curl_easy_setopt.3: add CURLOPT_SSL_ENABLE_ALPN/NPN

10 years agotool_cfgable: Moved easy handle cleanup to fix pingpong logout issues
Steve Holme [Mon, 10 Feb 2014 23:01:03 +0000 (23:01 +0000)]
tool_cfgable: Moved easy handle cleanup to fix pingpong logout issues

Commmit c5f8e2f5f4 removed the easy handle clean-up from tool_operate,
letting the code that was already present in free_config_fields()
perform the task. Unfortunately, this wasn't the correct place to do
this as it broke protocols, that would perform a logout, as the main
clean-up in tool_main had already been called.

10 years agosecureserver: Only set stunnel FIPS option when available
Dan Fandrich [Mon, 10 Feb 2014 19:44:28 +0000 (20:44 +0100)]
secureserver: Only set stunnel FIPS option when available

It seems the fips config option causes an error if FIPS mode was
not enabled at stunnel compile-time.  FIPS support was disabled
by default in stunnel 5.00, so this is probably really only needed
on versions between 4.32 and 5.00.

10 years agoNPN/ALPN: allow disabling via command line
Fabian Frank [Mon, 10 Feb 2014 07:38:55 +0000 (23:38 -0800)]
NPN/ALPN: allow disabling via command line

when using --http2 one can now selectively disable NPN or ALPN with
--no-alpn and --no-npn. for now honored with NSS only.

TODO: honor this option with GnuTLS and OpenSSL

10 years agonss: use correct preprocessor macro
Fabian Frank [Mon, 10 Feb 2014 01:58:54 +0000 (17:58 -0800)]
nss: use correct preprocessor macro

SSL_ENABLE_ALPN can be used for preprocessor ALPN feature detection,
but not SSL_NEXT_PROTO_SELECTED, since it is an enum value and not a
preprocessor macro.

10 years agotests: Added test for IMAP LSUB command
Steve Holme [Sun, 9 Feb 2014 21:01:37 +0000 (21:01 +0000)]
tests: Added test for IMAP LSUB command

10 years agotests: Removed test 807 as it has been superseded by tests 815 and 816
Steve Holme [Sun, 9 Feb 2014 20:37:44 +0000 (20:37 +0000)]
tests: Removed test 807 as it has been superseded by tests 815 and 816

10 years agotests: Updated the titles of tests 815 and 816
Steve Holme [Sun, 9 Feb 2014 20:32:44 +0000 (20:32 +0000)]
tests: Updated the titles of tests 815 and 816

10 years agotool_metalink: fix compiler warning when built without metalink
Daniel Stenberg [Sun, 9 Feb 2014 19:08:13 +0000 (20:08 +0100)]
tool_metalink: fix compiler warning when built without metalink

10 years agotool_operate: Move the trace and error file closure to tool_cfgable
Steve Holme [Sun, 9 Feb 2014 17:16:15 +0000 (17:16 +0000)]
tool_operate: Move the trace and error file closure to tool_cfgable

10 years agoTODO: Removed url-specific options
Steve Holme [Sun, 9 Feb 2014 13:29:00 +0000 (13:29 +0000)]
TODO: Removed url-specific options

10 years agotests: Re-enabled IMAP tests that require URL specific option support
Steve Holme [Sun, 9 Feb 2014 13:18:29 +0000 (13:18 +0000)]
tests: Re-enabled IMAP tests that require URL specific option support

10 years agoRELEASE-NOTES: Synced with 8e62f7a6503a
Steve Holme [Sun, 9 Feb 2014 13:04:33 +0000 (13:04 +0000)]
RELEASE-NOTES: Synced with 8e62f7a6503a

10 years agosecureserver: FIPS option is only supported since stunnel 5.00
Marc Hoersken [Sun, 9 Feb 2014 12:36:11 +0000 (13:36 +0100)]
secureserver: FIPS option is only supported since stunnel 5.00

10 years agotool_operate: Added support for performing URL specific operations
Steve Holme [Sun, 9 Feb 2014 11:01:36 +0000 (11:01 +0000)]
tool_operate: Added support for performing URL specific operations

10 years agotool_operate: Let curl handle cleanup take place in config_free()
Steve Holme [Fri, 7 Feb 2014 21:32:29 +0000 (21:32 +0000)]
tool_operate: Let curl handle cleanup take place in config_free()

10 years agoformdata: Must use Curl_safefree instead of free
Dan Fandrich [Sat, 8 Feb 2014 12:59:40 +0000 (13:59 +0100)]
formdata: Must use Curl_safefree instead of free

10 years agotest96: updated according to recent changes
Daniel Stenberg [Sat, 8 Feb 2014 22:20:10 +0000 (23:20 +0100)]
test96: updated according to recent changes

10 years agoruntests: allow <strippart> to remove lines
Daniel Stenberg [Sat, 8 Feb 2014 22:19:10 +0000 (23:19 +0100)]
runtests: allow <strippart> to remove lines

For verify file, if the strippart condition removes the line completely
it is now removed from the array.

10 years agotool_getparam: Added support for parsing of specific URL options
Steve Holme [Fri, 7 Feb 2014 21:14:43 +0000 (21:14 +0000)]
tool_getparam: Added support for parsing of specific URL options

10 years agosecureserver: Disable FIPS mode for stunnel
Dan Fandrich [Sat, 8 Feb 2014 10:51:28 +0000 (11:51 +0100)]
secureserver: Disable FIPS mode for stunnel

It's unnecessary for curl testing, and it can otherwise cause
stunnel to fail to start if OpenSSL doesn't support FIPS mode.

10 years agoformdata: Fixed memory leak on OOM condition
Dan Fandrich [Sat, 8 Feb 2014 10:33:43 +0000 (11:33 +0100)]
formdata: Fixed memory leak on OOM condition

10 years agoruntests: Disable valgrind when debugging
Dan Fandrich [Fri, 7 Feb 2014 21:15:02 +0000 (22:15 +0100)]
runtests: Disable valgrind when debugging

This was already mostly being done, except that analysis after the
test still assumed that the valgrind log files would be available. An
alternative way to handle the valgrind + gdb combination could be to
enable one of the valgrind debugger hooks.

10 years agotool_cfgable: For consistency renamed init_config() to config_init()
Steve Holme [Fri, 7 Feb 2014 19:40:45 +0000 (19:40 +0000)]
tool_cfgable: For consistency renamed init_config() to config_init()

10 years agotool_cfgable: Introduced config_free() function
Steve Holme [Fri, 7 Feb 2014 19:29:46 +0000 (19:29 +0000)]
tool_cfgable: Introduced config_free() function

10 years ago--help: add missing --tlsv1.x options
Daniel Stenberg [Fri, 7 Feb 2014 19:28:53 +0000 (20:28 +0100)]
--help: add missing --tlsv1.x options

10 years agolib1515.c: Fixed various compilation warnings
Steve Holme [Fri, 7 Feb 2014 15:00:51 +0000 (15:00 +0000)]
lib1515.c: Fixed various compilation warnings

lib1515.c:38:26 warning: unused parameter 'curl'
lib1515.c:38:81 warning: unused parameter 'ptr'
lib1515.c:38:5 warning: no previous prototype for 'debug_callback'
lib1515.c:46:5 warning: no previous prototype for 'do_one_request'
lib1515.c:120:3  warning: ISO C90 forbids mixed declarations and code

As well as some code policing such as white space and braces.

10 years agohttp2: updated README after NSS addition
Daniel Stenberg [Fri, 7 Feb 2014 14:50:31 +0000 (15:50 +0100)]
http2: updated README after NSS addition

Changed the support to a little matrix and added brief explanation of
what ALPN and NPN are for.

10 years agonss: support pre-ALPN versions
Daniel Stenberg [Fri, 7 Feb 2014 14:38:45 +0000 (15:38 +0100)]
nss: support pre-ALPN versions

10 years agonss: ALPN and NPN support
Fabian Frank [Fri, 7 Feb 2014 09:48:34 +0000 (01:48 -0800)]
nss: ALPN and NPN support

Add ALPN and NPN support for NSS. This allows cURL to negotiate
HTTP/2.0 connections when built with NSS.

10 years agoformpost: use semicolon in multipart/mixed
Daniel Stenberg [Fri, 7 Feb 2014 08:39:50 +0000 (09:39 +0100)]
formpost: use semicolon in multipart/mixed

Not comma, which is an inconsistency and a mistake probably inherited
from the examples section of RFC1867.

This bug has been present since the day curl started to support
multipart formposts, back in the 90s.

Reported-by: Rob Davies
Bug: http://curl.haxx.se/bug/view.cgi?id=1333

10 years agotests: Document use of the MEMDEBUG_LOG_SYNC macro
Dan Fandrich [Thu, 6 Feb 2014 22:55:25 +0000 (23:55 +0100)]
tests: Document use of the MEMDEBUG_LOG_SYNC macro

10 years agossh: Fixed a NULL pointer dereference on OOM condition
Dan Fandrich [Thu, 6 Feb 2014 22:53:48 +0000 (23:53 +0100)]
ssh: Fixed a NULL pointer dereference on OOM condition

10 years agonss: Updated copyright year for recent edits
Steve Holme [Thu, 6 Feb 2014 22:32:56 +0000 (22:32 +0000)]
nss: Updated copyright year for recent edits

10 years ago100-continue: fix timeout condition
Remi Gacogne [Thu, 6 Feb 2014 22:16:37 +0000 (23:16 +0100)]
100-continue: fix timeout condition

When using the multi socket interface, libcurl calls the
curl_multi_timer_callback asking to be woken up after
CURL_TIMEOUT_EXPECT_100 milliseconds.

After the timeout has expired, calling curl_multi_socket_action with
CURL_SOCKET_TIMEOUT as sockfd leads libcurl to check expired
timeouts. When handling the 100-continue one, the following check in
Curl_readwrite() fails if exactly CURL_TIMEOUT_EXPECT_100 milliseconds
passed since the timeout has been set!

It seems logical to consider that having waited for exactly
CURL_TIMEOUT_EXPECT_100 ms is enough.

Bug: http://curl.haxx.se/bug/view.cgi?id=1334

10 years agonss: prefer highest available TLS version
Fabian Frank [Thu, 6 Feb 2014 08:41:53 +0000 (00:41 -0800)]
nss: prefer highest available TLS version

Offer TLSv1.0 to 1.2 by default, still fall back to SSLv3
if --tlsv1[.N] was not specified on the command line.

10 years agotests: add test for bug #1327 (dns cache timeout)
Romulo A. Ceccon [Mon, 3 Feb 2014 19:09:33 +0000 (17:09 -0200)]
tests: add test for bug #1327 (dns cache timeout)

Fix for bug #1303 (030a2b8cb) was not complete.
libcurl still pruned DNS entries added manually
after detecting a dead connection. This test
checks such behavior.

10 years agotests: add test for bug #1303 (dns cache timeout)
Romulo A. Ceccon [Fri, 31 Jan 2014 19:03:13 +0000 (17:03 -0200)]
tests: add test for bug #1303 (dns cache timeout)

Test-case 1515 reproduces bug #1303, where libcurl
would incorrectly prune DNS entries added via
CURLOPT_RESOLVE after the DNS_CACHE_TIMEOUT had
expired.

10 years agohttp2: spell fixed README and added version requirement
Daniel Stenberg [Thu, 6 Feb 2014 21:26:47 +0000 (22:26 +0100)]
http2: spell fixed README and added version requirement

10 years agotool_operate: Removed unused argument parameters from operate_do()
Steve Holme [Thu, 6 Feb 2014 19:51:18 +0000 (19:51 +0000)]
tool_operate: Removed unused argument parameters from operate_do()

10 years agotool_operate: Moved list SSL engines code into operate()
Steve Holme [Thu, 6 Feb 2014 19:43:50 +0000 (19:43 +0000)]
tool_operate: Moved list SSL engines code into operate()

10 years agotool_operate: Moved argument parsing into operate()
Steve Holme [Thu, 6 Feb 2014 19:31:44 +0000 (19:31 +0000)]
tool_operate: Moved argument parsing into operate()

10 years agoruntests: add suppression generator help
Daniel Stenberg [Wed, 5 Feb 2014 22:48:44 +0000 (23:48 +0100)]
runtests: add suppression generator help

Leave the valgrind --gen-suppressions option in there, commented, to
make it easier for next update.

10 years agovalgrind: updated suppressions file
Daniel Stenberg [Wed, 5 Feb 2014 22:46:31 +0000 (23:46 +0100)]
valgrind: updated suppressions file

The call stack was modified in 2dc7ad23 so the supressions didn't work
anymore.

10 years agoruntests: detect 'ares' better
Daniel Stenberg [Wed, 5 Feb 2014 22:36:16 +0000 (23:36 +0100)]
runtests: detect 'ares' better

... caused false detections of the threaded resolver otherwise

10 years agotool_operate: Moved .curlrc parsing code into operate()
Steve Holme [Wed, 5 Feb 2014 20:28:36 +0000 (20:28 +0000)]
tool_operate: Moved .curlrc parsing code into operate()

10 years agotool_operate: Moved locale setup code into operate_init()
Steve Holme [Wed, 5 Feb 2014 20:20:45 +0000 (20:20 +0000)]
tool_operate: Moved locale setup code into operate_init()

10 years agohttp2: minor update of the README
Daniel Stenberg [Wed, 5 Feb 2014 14:31:29 +0000 (15:31 +0100)]
http2: minor update of the README

10 years agohttp2: rely on content-encoding header
Fabian Frank [Wed, 5 Feb 2014 08:21:16 +0000 (00:21 -0800)]
http2: rely on content-encoding header

A server might respond with a content-encoding header and a response
that was encoded accordingly in HTTP-draft-09/2.0 mode, even if the
client did not send an accept-encoding header earlier. The server might
not send a content-encoding header if the identity encoding was used to
encode the response.

See:
http://tools.ietf.org/html/draft-ietf-httpbis-http2-09#section-9.3

10 years agotool_operate: shortened too-long source line
Dan Fandrich [Tue, 4 Feb 2014 20:49:10 +0000 (21:49 +0100)]
tool_operate: shortened too-long source line

10 years agotool_operate: Introduced operate_free() function
Steve Holme [Sun, 2 Feb 2014 15:37:28 +0000 (15:37 +0000)]
tool_operate: Introduced operate_free() function

10 years agotool_operate: Introduced operate_init() function
Steve Holme [Sun, 2 Feb 2014 15:28:25 +0000 (15:28 +0000)]
tool_operate: Introduced operate_init() function

10 years agotool_operate: Introduced new operate() function
Steve Holme [Sun, 2 Feb 2014 15:20:37 +0000 (15:20 +0000)]
tool_operate: Introduced new operate() function

10 years agohttp2: enforce gzip auto-decompress
Daniel Stenberg [Tue, 4 Feb 2014 14:07:08 +0000 (15:07 +0100)]
http2: enforce gzip auto-decompress

As this is mandated by the http2 spec draft-09

10 years agohttp2: handle incoming data larger than remaining buffer
Tatsuhiro Tsujikawa [Tue, 4 Feb 2014 13:57:29 +0000 (14:57 +0100)]
http2: handle incoming data larger than remaining buffer

10 years agohttp2: Check stream ID we are interested in
Tatsuhiro Tsujikawa [Sun, 2 Feb 2014 12:31:13 +0000 (21:31 +0900)]
http2: Check stream ID we are interested in

10 years agohttp2: store response header in temporary buffer
Tatsuhiro Tsujikawa [Tue, 4 Feb 2014 13:54:42 +0000 (14:54 +0100)]
http2: store response header in temporary buffer

10 years agoHTTP2: add layer between existing http and socket(TLS) layer
Tatsuhiro Tsujikawa [Fri, 31 Jan 2014 15:51:24 +0000 (00:51 +0900)]
HTTP2: add layer between existing http and socket(TLS) layer

This patch chooses different approach to integrate HTTP2 into HTTP curl
stack. The idea is that we insert HTTP2 layer between HTTP code and
socket(TLS) layer. When HTTP2 is initialized (either in NPN or Upgrade),
we replace the Curl_recv/Curl_send callbacks with HTTP2's, but keep the
original callbacks in http_conn struct. When sending serialized data by
nghttp2, we use original Curl_send callback. Likewise, when reading data
from network, we use original Curl_recv callback. In this way we can
treat both TLS and non-TLS connections.

With this patch, one can transfer contents from https://twitter.com and
from nghttp2 test server in plain HTTP as well.

The code still has rough edges. The notable one is I could not figure
out how to call nghttp2_session_send() when underlying socket is
writable.

10 years agogtls: add ALPN support
Fabian Frank [Tue, 4 Feb 2014 08:10:37 +0000 (00:10 -0800)]
gtls: add ALPN support

Add ALPN support when using GnuTLS >= 3.2.0. This allows
libcurl to negotiate HTTP/2.0 for https connections when
built with GnuTLS.

See:
http://www.gnutls.org/manual/gnutls.html#Application-Layer-Protocol-Negotiation-_0028ALPN_0029
http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04

10 years agotool_operate: Moved libcurl information gathering to tool_main
Steve Holme [Sun, 2 Feb 2014 15:11:22 +0000 (15:11 +0000)]
tool_operate: Moved libcurl information gathering to tool_main

10 years agoopenssl: add ALPN support
Fabian Frank [Mon, 3 Feb 2014 02:33:28 +0000 (18:33 -0800)]
openssl: add ALPN support

Add ALPN support when using OpenSSL. This will offer ALPN and NPN to the
server, who can respond with either one or none of the two. OpenSSL >=
1.0.2 is required, which means as of today obtaining a snapshot from
ftp://ftp.openssl.org/snapshot/.

See:
http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
https://github.com/openssl/openssl/blob/ba168244a14bbd056e502d7daa04cae4aabe9d0d/ssl/ssl_lib.c#L1787

10 years agotool_operate: Moved command line argument parsing into separate function
Steve Holme [Sun, 2 Feb 2014 14:58:25 +0000 (14:58 +0000)]
tool_operate: Moved command line argument parsing into separate function

10 years agotool_operate: Simplified parse .curlrc decision logic
Steve Holme [Sun, 2 Feb 2014 14:29:54 +0000 (14:29 +0000)]
tool_operate: Simplified parse .curlrc decision logic

10 years agotool_operate: Moved main initialisation and cleanup code into tool_main
Steve Holme [Sun, 2 Feb 2014 14:21:53 +0000 (14:21 +0000)]
tool_operate: Moved main initialisation and cleanup code into tool_main

10 years agotool_main: Fixed compilation warning from commit 0104678c79
Steve Holme [Mon, 3 Feb 2014 12:16:22 +0000 (12:16 +0000)]
tool_main: Fixed compilation warning from commit 0104678c79

no previous prototype for function 'memory_tracking_init'

10 years agotool_main: Changed stack based config struct to be heap based
Steve Holme [Sun, 2 Feb 2014 13:58:35 +0000 (13:58 +0000)]
tool_main: Changed stack based config struct to be heap based

10 years agotests: Moved some comments so the test data files parse as XML
Dan Fandrich [Sun, 2 Feb 2014 23:23:34 +0000 (00:23 +0100)]
tests: Moved some comments so the test data files parse as XML

10 years agotool_operate: Moved memory tracking initialisation into tool_main
Steve Holme [Sun, 2 Feb 2014 13:45:35 +0000 (13:45 +0000)]
tool_operate: Moved memory tracking initialisation into tool_main

10 years agotests: Fixed test172 cookie expiry
Steve Holme [Sun, 2 Feb 2014 11:01:10 +0000 (11:01 +0000)]
tests: Fixed test172 cookie expiry

The test contains a cookie jar file where one of the cookies has an
expiry date of 1391252187 -- Sat, 1 Feb 2014 10:56:27 GMT which has
now expired. Updated to Wed, 14 Oct 2037 16:36:33 GMT as per test
179.

Reported-by: Adam Sampson
Bug: http://curl.haxx.se/bug/view.cgi?id=1330

10 years agotool_operate: Moved initial config setup into new init_config() function
Steve Holme [Sat, 1 Feb 2014 13:36:48 +0000 (13:36 +0000)]
tool_operate: Moved initial config setup into new init_config() function

10 years agotool_main: Moved config struct initialisation into a separate function
Steve Holme [Sat, 1 Feb 2014 13:26:09 +0000 (13:26 +0000)]
tool_main: Moved config struct initialisation into a separate function

In preparation for adding URL specific options moved the initialisation
of the Configurable structure into a separate function in tool_cfgable.