Fabian Frank
133cdd29ea
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
2014-02-05 10:26:12 +01:00
Daniel Stenberg
e5524b7b25
http2: enforce gzip auto-decompress
...
As this is mandated by the http2 spec draft-09
2014-02-04 15:07:08 +01:00
Tatsuhiro Tsujikawa
0ea9f70049
http2: handle incoming data larger than remaining buffer
2014-02-04 14:57:29 +01:00
Tatsuhiro Tsujikawa
4082dc9de6
http2: Check stream ID we are interested in
2014-02-04 14:55:29 +01:00
Tatsuhiro Tsujikawa
dbccf497da
http2: store response header in temporary buffer
2014-02-04 14:54:42 +01:00
Tatsuhiro Tsujikawa
63b26d889f
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.
2014-02-04 14:49:49 +01:00
Fabian Frank
4d8db595ca
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
2014-02-04 09:48:27 +01:00
Fabian Frank
8b6654224b
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
ba168244a1/ssl/ssl_lib.c (L1787)
2014-02-03 23:46:06 +01:00
Marc Hoersken
82f558366f
winssl: improved default SSL/TLS protocol selection
...
For some reason Windows 7 SP1 chooses TLS 1.0 instead of TLS 1.2
if it is not explicitly enabled within grbitEnabledProtocols.
More information can be found on MSDN:
http://msdn.microsoft.com/library/windows/desktop/aa379810.aspx
2014-01-31 20:01:25 +01:00
Dan Fandrich
0f213fdca1
pipeline: Fixed a NULL pointer dereference on OOM
2014-01-31 00:05:36 +01:00
Dan Fandrich
c631a54bb6
ftp: fixed a memory leak on wildcard error path
2014-01-30 22:15:03 +01:00
Dan Fandrich
768151449b
netrc: Fixed a memory leak in an OOM condition
2014-01-30 22:15:03 +01:00
Steve Holme
97857de80e
ntlm: Fixed a memory leak when using NTLM with a proxy server
2014-01-30 20:59:26 +00:00
Daniel Stenberg
b58b87e76e
http2: fix size check in on_data_chunk_recv
2014-01-30 20:24:15 +01:00
Daniel Stenberg
48c3bed43b
http2: add CRLF when first data arrives
2014-01-30 20:24:15 +01:00
Tatsuhiro Tsujikawa
c5165b8458
http2_recv: Return written length on CURLE_AGAIN
2014-01-30 17:49:35 +01:00
Tatsuhiro Tsujikawa
88705ef80e
http2: Use nghttp2_session_mem_recv and nghttp2_session_upgrade
2014-01-30 17:45:53 +01:00
Daniel Stenberg
83f52a455f
http2: basic version of receiving DATA
2014-01-30 16:09:36 +01:00
Daniel Stenberg
a7affd637f
http2: convert HEADER frames to HTTP1-like headers
...
... and then go through the "normal" HTTP engine.
2014-01-30 15:58:07 +01:00
Daniel Stenberg
93f473c78a
http2: fix EWOULDBLOCK in recv_callback()
2014-01-30 14:31:05 +01:00
Daniel Stenberg
a878cb3056
http2: do the POST Upgrade dance properly
2014-01-30 14:26:00 +01:00
Steve Holme
0e11307057
ntlm: Use static client nonce for the test suite
2014-01-30 11:39:08 +00:00
Daniel Stenberg
0f23662af7
http2.h: provide empty macros for non-http2 builds
2014-01-30 11:46:59 +01:00
Fabian Frank
dd011df9e1
http2: switch into http2 mode if NPN indicates
...
Check the NPN result before preparing an HTTP request and switch into
HTTP/2.0 mode if necessary. This is a work in progress, the actual code
to prepare and send the request using nghttp2 is still missing from
Curl_http2_send_request().
2014-01-30 11:34:37 +01:00
Daniel Stenberg
8e778887b5
http2: s/Curl_http2_request/Curl_http2_request_upgrade
...
To better reflect its purpose
2014-01-30 11:33:37 +01:00
Daniel Stenberg
99b4ff8b6f
http2-openssl: verify that NPN functionality is present
2014-01-30 11:24:15 +01:00
Fabian Frank
22c198fa89
openssl: set up hooks with to perform NPN
...
NPN is what is available in the wild today to negotiate SPDY or HTTP/2.0
connections. It is expected to be replaced by ALPN in the future. If
HTTP/2.0 is negotiated, this is indicated for the entire connection and
http.c is expected to initialize itself for HTTP/2.0 instead of
HTTP/1.1.
see:
http://technotes.googlecode.com/git/nextprotoneg.html
http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
2014-01-30 11:13:28 +01:00
Daniel Stenberg
c3fe3d9926
http2: added stubs for all nghttp2 callbacks
...
This makes it easier to trace what's happening.
2014-01-30 00:11:56 +01:00
Daniel Stenberg
62e3d66cc6
http2: use FIRSTSOCKET instead of 0 to index the sockets array
2014-01-29 23:47:24 +01:00
Daniel Stenberg
b451c10d1e
http2: receive and log the received header frames
2014-01-29 23:46:20 +01:00
Daniel Stenberg
be84524cc2
http2_recv: log nghttp2 return codes for debugging purposes
2014-01-29 23:20:46 +01:00
Daniel Stenberg
803581d3e0
HTTP2: reject nghttp2 versions before 0.3.0
2014-01-29 22:53:08 +01:00
Gisle Vanem
341d09bc2b
http2: adjusted to newer nghttp2_session_callbacks struct
...
the number of elements in the 'nghttp2_session_callbacks' structure is
now reduced by 2 in version 0.3.0 (I'm not sure when the change
happened, but checking for ver 0.3.0 work for me).
2014-01-29 22:52:22 +01:00
Gisle Vanem
0070f7a09d
HTTP2: Wrong NgHTTP2 user-data
...
Something is wrong in 'userp' for the HTTP2 recv_callback(). The
session is created using bogus user-data; '&conn' and not 'conn'.
I noticed this since the socket-value in Curl_read_plain() was set to a
impossible high value.
2014-01-29 22:50:25 +01:00
Daniel Stenberg
220bcba93d
NTLM: error: conversion to 'int' from 'long int' may alter its value
...
Fixed two compiler nits
2014-01-29 22:42:34 +01:00
Steve Holme
eb91e1a58f
ntlm: Coding style policing dating back to 2011
2014-01-29 20:51:04 +00:00
Steve Holme
2319221c83
ntlm: Use a timestamp of 01/01/1970 for the test suite
2014-01-29 20:24:32 +00:00
Steve Holme
914b60c827
ntlm: Updated Curl_ntlm_core_mk_ntlmv2_resp() to use local variables
...
...until the function is successful when it returns them in the out
parameters.
2014-01-29 20:24:16 +00:00
Steve Holme
07b66cbfa4
ntlm: Added cross platform support for writing NTLMv2 timestamp in buffer
...
Added conversion functions write32_le() and write64_le() to ensure the
NTLMv2 timestamp is always written in little-endian.
2014-01-29 20:22:10 +00:00
Prash Dush
86724581b6
ntlm: Added support for NTLMv2
2014-01-29 20:17:11 +00:00
Kamil Dudka
665c160f0a
nss: do not use the NSS_ENABLE_ECC define
...
It is not provided by NSS public headers.
Bug: https://bugzilla.redhat.com/1058776
2014-01-29 13:57:21 +01:00
Kamil Dudka
e15e73b741
nss: do not fail if NSS does not implement a cipher
...
... that the user does not ask for
2014-01-29 13:46:17 +01:00
Daniel Stenberg
53940f8834
http2: switch recv/send functions to http2 ones after 101
2014-01-29 10:24:05 +01:00
Daniel Stenberg
8d3608f2ad
http2: handle 101 responses and switch to HTTP2
2014-01-29 10:24:05 +01:00
Dan Fandrich
1a20f59237
oauth2: Fixed a memory leak in an OOM condition
2014-01-28 23:55:04 +01:00
Romulo A. Ceccon
31860ab8c8
hostip: don't remove DNS entries that are in use
...
hostcache_timestamp_remove() should remove old *unused* entries from the
host cache, but it never checked whether the entry was actually in
use. This complements commit 030a2b8cb
.
Bug: http://curl.haxx.se/bug/view.cgi?id=1327
2014-01-28 22:25:48 +01:00
Daniel Stenberg
bcb19883a8
TFTP: fix crash on time-out
...
tftp_done() can get called with its TFTP state pointer still being NULL
on an early time-out, which caused a segfault when dereferenced.
Reported-by: Glenn Sheridan
Bug: http://curl.haxx.se/mail/lib-2014-01/0246.html
2014-01-28 22:17:16 +01:00
Dan Fandrich
b4b28c7001
netrc: Fixed a memory and file descriptor leak on OOM
2014-01-24 21:52:48 +01:00
Dan Fandrich
da9864fb72
multi: Fixed a memory leak on OOM condition
2014-01-24 00:22:08 +01:00
Fabian Frank
251305cd7f
axtls: fix compiler warning on conversion ssize_t => int
2014-01-21 08:21:55 +01:00