<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/curl.git/lib/multi.c, branch bagder/chunk-encoding-data</title>
<subtitle>github.com: bagder/curl.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/'/>
<entry>
<title>urldata: make magic be the first struct field</title>
<updated>2021-01-20T07:51:01+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-19T07:23:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=942cf12c2f73c4bb13858acc9101b1d644bf7c50'/>
<id>942cf12c2f73c4bb13858acc9101b1d644bf7c50</id>
<content type='text'>
By making the `magic` identifier the same size and at the same place
within the structs (easy, multi, share), libcurl will be able to more
reliably detect and safely error out if an application passes in the
wrong handle to APIs. Easier to detect and less likely to cause crashes
if done.

Such mixups can't be detected at compile-time due to them being
typedefed void pointers - unless `CURL_STRICTER` is defined.

Closes #6484
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By making the `magic` identifier the same size and at the same place
within the structs (easy, multi, share), libcurl will be able to more
reliably detect and safely error out if an application passes in the
wrong handle to APIs. Easier to detect and less likely to cause crashes
if done.

Such mixups can't be detected at compile-time due to them being
typedefed void pointers - unless `CURL_STRICTER` is defined.

Closes #6484
</pre>
</div>
</content>
</entry>
<entry>
<title>transfer: remove conn-&gt;data use</title>
<updated>2021-01-19T16:07:02+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-19T09:24:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=219d9f8620d41134825db693500131db0305a325'/>
<id>219d9f8620d41134825db693500131db0305a325</id>
<content type='text'>
Closes #6486
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #6486
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: more conn-&gt;data cleanups</title>
<updated>2021-01-19T08:14:51+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-18T10:56:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=a304051620b92e12b6b1b4e19edc57b34ea332b6'/>
<id>a304051620b92e12b6b1b4e19edc57b34ea332b6</id>
<content type='text'>
Closes #6479
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #6479
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: pass in 'struct Curl_easy *' to most functions</title>
<updated>2021-01-17T22:56:09+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-08T16:58:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=215db086e09665ee7af9b646ad6c4d6e281001ac'/>
<id>215db086e09665ee7af9b646ad6c4d6e281001ac</id>
<content type='text'>
... in most cases instead of 'struct connectdata *' but in some cases in
addition to.

- We mostly operate on transfers and not connections.

- We need the transfer handle to log, store data and more. Everything in
  libcurl is driven by a transfer (the CURL * in the public API).

- This work clarifies and separates the transfers from the connections
  better.

- We should avoid "conn-&gt;data". Since individual connections can be used
  by many transfers when multiplexing, making sure that conn-&gt;data
  points to the current and correct transfer at all times is difficult
  and has been notoriously error-prone over the years. The goal is to
  ultimately remove the conn-&gt;data pointer for this reason.

Closes #6425
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... in most cases instead of 'struct connectdata *' but in some cases in
addition to.

- We mostly operate on transfers and not connections.

- We need the transfer handle to log, store data and more. Everything in
  libcurl is driven by a transfer (the CURL * in the public API).

- This work clarifies and separates the transfers from the connections
  better.

- We should avoid "conn-&gt;data". Since individual connections can be used
  by many transfers when multiplexing, making sure that conn-&gt;data
  points to the current and correct transfer at all times is difficult
  and has been notoriously error-prone over the years. The goal is to
  ultimately remove the conn-&gt;data pointer for this reason.

Closes #6425
</pre>
</div>
</content>
</entry>
<entry>
<title>multi: set the PRETRANSFER time-stamp when we switch to PERFORM</title>
<updated>2021-01-14T22:16:39+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-14T13:24:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=b68dc34af341805aeb7b371541a2b4074da76217'/>
<id>b68dc34af341805aeb7b371541a2b4074da76217</id>
<content type='text'>
... instead of at end of the DO state. This makes the timer more
accurate for the protocols that use the DOING state (such as FTP), and
simplifies how the function (now called init_perform) is called.

The timer will then include the entire procedure up to PERFORM -
including all instructions for getting the transfer started.

Closes #6454
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... instead of at end of the DO state. This makes the timer more
accurate for the protocols that use the DOING state (such as FTP), and
simplifies how the function (now called init_perform) is called.

The timer will then include the entire procedure up to PERFORM -
including all instructions for getting the transfer started.

Closes #6454
</pre>
</div>
</content>
</entry>
<entry>
<title>multi: remove Curl_ prefix from static functions</title>
<updated>2021-01-14T07:09:09+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-13T10:50:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=78af707cafff31ddef1895d86ab7150706388f63'/>
<id>78af707cafff31ddef1895d86ab7150706388f63</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>multi_runsingle: bail out early on data-&gt;conn == NULL</title>
<updated>2021-01-11T11:33:23+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-11T08:37:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=06f1db57cac8ade2602fba61909c8d54b57fa10b'/>
<id>06f1db57cac8ade2602fba61909c8d54b57fa10b</id>
<content type='text'>
As that's a significant error condition and scan-build warns for NULL
pointer dereferences if we don't.

Closes #6433
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As that's a significant error condition and scan-build warns for NULL
pointer dereferences if we don't.

Closes #6433
</pre>
</div>
</content>
</entry>
<entry>
<title>multi: skip DONE state if there's no connection left for ftp wildcard</title>
<updated>2021-01-11T11:33:11+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-11T09:01:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=48220f7e3d4431879602f8d3bf231bf6f635ca79'/>
<id>48220f7e3d4431879602f8d3bf231bf6f635ca79</id>
<content type='text'>
... to avoid running in that state with data-&gt;conn being NULL.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... to avoid running in that state with data-&gt;conn being NULL.
</pre>
</div>
</content>
</entry>
<entry>
<title>httpauth: make multi-request auth work with custom port</title>
<updated>2021-01-02T22:40:47+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2021-01-01T22:41:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=648712eec1eedb05965b9b4d6dd457bda5d70481'/>
<id>648712eec1eedb05965b9b4d6dd457bda5d70481</id>
<content type='text'>
When doing HTTP authentication and a port number set with CURLOPT_PORT,
the code would previously have the URL's port number override as if it
had been a redirect to an absolute URL.

Added test 1568 to verify.

Reported-by: UrsusArctos on github
Fixes #6397
Closes #6400
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When doing HTTP authentication and a port number set with CURLOPT_PORT,
the code would previously have the URL's port number override as if it
had been a redirect to an absolute URL.

Added test 1568 to verify.

Reported-by: UrsusArctos on github
Fixes #6397
Closes #6400
</pre>
</div>
</content>
</entry>
<entry>
<title>multi: when erroring in TOOFAST state, act as for PERFORM</title>
<updated>2020-12-17T12:57:27+00:00</updated>
<author>
<name>Daniel Stenberg</name>
<email>daniel@haxx.se</email>
</author>
<published>2020-12-17T10:17:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/curl.git/commit/?id=3e17c8ab72e66bdd2faef5561de5030c519e3359'/>
<id>3e17c8ab72e66bdd2faef5561de5030c519e3359</id>
<content type='text'>
When failing in TOOFAST, the multi_done() wasn't called so the same
cleanup and handling wasn't done like when it fails in PERFORM, which in
the case of FTP could mean that the control connection wouldn't be
marked as "dead" for the CURLE_ABORTED_BY_CALLBACK case. Which caused
ftp_disconnect() to use it to send "QUIT", which could end up waiting
for a response a long time before giving up!

Reported-by: Tomas Berger
Fixes #6333
Closes #6337
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When failing in TOOFAST, the multi_done() wasn't called so the same
cleanup and handling wasn't done like when it fails in PERFORM, which in
the case of FTP could mean that the control connection wouldn't be
marked as "dead" for the CURLE_ABORTED_BY_CALLBACK case. Which caused
ftp_disconnect() to use it to send "QUIT", which could end up waiting
for a response a long time before giving up!

Reported-by: Tomas Berger
Fixes #6333
Closes #6337
</pre>
</div>
</content>
</entry>
</feed>
