summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2021-01-19 16:37:39 +0200
committerTimo Teräs <timo.teras@iki.fi>2021-04-11 14:05:40 +0300
commitc88113168d345ea101f6cce7e4a28c29fed9e74b (patch)
tree07dcb829add046170d3d438da83731173e063269 /test
parent719ff51acdef114d8fd7eed04014ba5854ccf41f (diff)
downloadapk-tools-c88113168d345ea101f6cce7e4a28c29fed9e74b.tar.gz
apk-tools-c88113168d345ea101f6cce7e4a28c29fed9e74b.tar.bz2
apk-tools-c88113168d345ea101f6cce7e4a28c29fed9e74b.tar.xz
apk-tools-c88113168d345ea101f6cce7e4a28c29fed9e74b.zip
libfetch: fix connection pooling for proxied http/https requests
The connection pooling was broken in two ways: 1. The original URL was always used as the connection pool URL, resulting in duplicate connections to the proxy for http URLs (each http URL would get separate proxy connection) 2. The cache_url stored was always the socket level connect URL. In case of HTTPS, the lookup was done done with the real URL, but the proxy URL was stored as the "cache URL". Thus HTTPS CONNECT connections were never re-used. This fixes the code with following logic: 1. The cache key url is the real URL when no-proxy, or when HTTPS with proxy (the socket is connected to proxy, but logically it is connected to the real URL due to HTTP CONNECT request). And for HTTP with proxy, it's the proxy URL so same proxy connection can be reused for all requests going through it. 2. fetch_connect() now gets cache key URL separately, and it always gets the same value as the fetch_cache_get() calls. (cherry picked from commit aa1f935c05129288f1550782e34d529fc77dda0a)
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions