Fix Guzzle following redirects with a custom temporary sink
authorTim Düsterhus <duesterhus@woltlab.com>
Mon, 24 Aug 2020 08:46:36 +0000 (10:46 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 24 Aug 2020 08:51:02 +0000 (10:51 +0200)
commitce163806c468763f6e3b04e4bf7318c6f8035737
tree5da5e83d0d8828c65c0b5de5d457103988562b56
parent95939e32de17b466f6588dd150c9bc0fd29fa42a
Fix Guzzle following redirects with a custom temporary sink

When following redirects Guzzle copies over the request options for the next
iteration internally, including the bare `resource` that was passed to it.

This bare resource will then be wrapped into the Stream wrapper. This stream
wrapper explicitely calls `close()` for the underlying resource when it is
being closed.

The created Streams for the subrequests will be closed before the `send`
function returns, thus ultimately closing the resource for the “parent”
request.

Fix this issue by passing a Stream, instead of a bare resource. This one
will be passed along as-is.

Fixes #3529.
wcfsetup/install/files/lib/system/style/FontManager.class.php
wcfsetup/install/files/lib/util/HTTPRequest.class.php