Commit Graph

28 Commits

Author SHA1 Message Date
David Kalnischkies 258b9e512c apply various suggestions made by cppcheck
Reported-By: cppcheck
Git-Dch: Ignore
2015-11-05 12:21:33 +01:00
David Kalnischkies 23e64f6d0f allow acquire method specific options via Binary scope
Allows users who know what they are getting themselves into with this
trick to e.g. disable privilege dropping for e.g. file:// until they can
fix up the permissions on those repositories. It helps also the test
framework and people with a similar setup (= me) to run in less modified
environments.
2015-11-05 12:21:33 +01:00
David Kalnischkies 830a1b8c9e fix two memory leaks reported by gcc
Reported-By: gcc -fsanitize=address -fno-sanitize=vptr
Git-Dch: Ignore
2015-09-14 15:22:18 +02:00
David Kalnischkies 3b3028467c add c++11 override marker to overridden methods
C++11 adds the 'override' specifier to mark that a method is overriding
a base class method and error out if not. We hide it in the APT_OVERRIDE
macro to ensure that we keep compiling in pre-c++11 standards.

Reported-By: clang-modernize -add-override -override-macros
Git-Dch: Ignore
2015-08-10 17:27:17 +02:00
David Kalnischkies dcbb364fc6 detect 416 complete file in partial by expected hash
If we have the expected hashes we can check with them if the file we
have in partial we got a 416 for is the expected file. We detected this
with same-size before, but not every server sends a good Content-Range
header with a 416 response.
2015-05-12 00:30:16 +02:00
David Kalnischkies 34faa8f7ae calculate hashes while downloading in https
We do this in HTTP already to give the CPU some exercise while the disk
is heavily spinning (or flashing?) to store the data avoiding the need
to reread the entire file again later on to calculate the hashes – which
happens outside of the eyes of progress reporting, so you might ended up
with a bunch of https workers 'stuck' at 100% while they were busy
calculating hashes.

This is a bummer for everyone using apt as a connection speedtest as the
https method works slower now (not really, it just isn't reporting done
too early anymore).
2015-04-19 01:13:09 +02:00
David Kalnischkies 9224ce3d4d calculate only expected hashes in methods
Methods get told which hashes are expected by the acquire system, which
means we can use this list to restrict what we calculate in the methods
as any extra we are calculating is wasted effort as we can't compare it
with anything anyway.

Adding support for a new hash algorithm is therefore 'free' now and if a
algorithm is no longer provided in a repository for a file, we
automatically stop calculating it.

In practice this results in a speed-up in Debian as we don't have SHA512
here (so far), so we practically stop calculating it.
2015-04-19 01:13:09 +02:00
David Kalnischkies 27925d82dd improve https method queue progress reporting
The worker expects that the methods tell him when they start or finish
downloading a file. Various information pieces are passed along in this
report including the (expected) filesize. https was using a "global"
struct for reporting which made it 'reuse' incorrect values in some
cases like a non-existent InRelease fallbacking to Release{,.gpg}
resulting in a size-mismatch warning. Reducing the scope and redesigning
the setting of the values we can fix this and related issues.

Closes: 777565, 781509
Thanks: Robert Edmonds and Anders Kaseorg for initial patchs
2015-04-19 01:13:08 +02:00
David Kalnischkies 905fba60a0 derive more of https from http method
Bug #778375 uncovered that https wasn't properly integrated in the class
family tree of http as it was supposed to be leading to a NULL pointer
dereference. Fixing this 'properly' was deemed to much diff for
practically no gain that late in the release, so commit
0c2dc43d4f just fixed the synptom, while
this commit here is fixing the cause plus adding a test.
2015-03-16 18:00:50 +01:00
David Kalnischkies d61960d924 merge debian/sid into debian/experimental 2015-03-16 17:59:31 +01:00
Michael Vogt 9127d7aecf Fix missing URIStart() for https downloads
Add a explicit ReceivedData to HttpsMethod that indicates when
we got data from the connection so that we can send URISTart()
to the parent.

This is needed because URIStart got moved in f9b4f12d from
the progress_callback to write_data() and it only checks for
Res.Size. In the old code if progress_callback is called by
libcurl (and sets Res.Size) before write_data is called then
URIStart() is never send. Making this a explicit ReceivedData
variable fixes this issue.
2015-01-05 10:27:53 +01:00
Michael Vogt 9983999d29 Fix backward compatiblity of the new pkgAcquireMethod::DropPrivsOrDie()
Do not drop privileges in the methods when using a older version of
libapt that does not support the chown magic in partial/ yet. To
do this DropPrivileges() now will ignore a empty Apt::Sandbox::User.

Cleanup all hardcoded _apt along the way.
2014-10-13 11:29:47 +02:00
Michael Vogt a2d40703e4 make http size check work 2014-10-06 17:42:39 +02:00
David Kalnischkies 25613a61f6 fix: Member variable 'X' is not initialized in the constructor.
Reported-By: cppcheck
Git-Dch: Ignore
2014-09-27 00:11:11 +02:00
Michael Vogt ffd2dd93a6 make https honor ExpectedSize as well 2014-08-26 19:20:04 -07:00
David Kalnischkies 453b82a388 cleanup headers and especially #includes everywhere
Beside being a bit cleaner it hopefully also resolves oddball problems
I have with high levels of parallel jobs.

Git-Dch: Ignore
Reported-By: iwyu (include-what-you-use)
2014-03-13 13:58:45 +01:00
David Kalnischkies 655122418d warning: unused parameter ‘foo’ [-Wunused-parameter]
Reported-By: gcc -Wunused-parameter
Git-Dch: Ignore
2014-03-13 13:58:45 +01:00
Michael Vogt 1e3f4083db Fix typos in documentation (codespell) 2014-02-22 18:34:33 +01:00
David Kalnischkies 9ce3cfc930 correct some style/performance/warnings from cppcheck
The most "visible" change is from utime to utimensat/futimens
as the first one isn't part of POSIX anymore.

Reported-By: cppcheck
Git-Dch: Ignore
2014-01-16 22:19:49 +01:00
David Kalnischkies fd46d30571 handle complete responses to https range requests
Servers might respond with a complete file either because they don't
support Ranges at all or the If-Range condition isn't statisfied, so we
have to parse the headers curl gets ourself to seek or truncate the file
we have so far.

This also finially adds the testcase testing a bunch of partial
situations for both, http and https - which is now all green.

Closes: 617643, 667699
LP: 1157943
2013-10-01 11:17:02 +02:00
Michael Vogt 45a9cc46a1 add missing curl_easy_cleanup() 2013-01-09 14:47:35 +01:00
David Kalnischkies f40db111e1 just in case: correct the header-guard for https to not match http 2012-02-11 21:26:42 +01:00
David Kalnischkies 379e22a4c0 remove the arbitrary MAXLEN limit for response lines (Closes: #658346) 2012-02-11 21:25:57 +01:00
David Kalnischkies 472ff00ef2 use forward declaration in headers if possible instead of includes 2011-09-19 19:14:19 +02:00
Michael Vogt 5085e66067 methods/https.cc: cleanup for CURLOPT_LOW_SPEED_TIME 2009-11-17 09:55:22 -06:00