Debian Package Tracker
Register | Log in
Subscribe

httrack

Copy websites to your computer (Offline browser)

Choose email to subscribe with

general
  • source: httrack (main)
  • version: 3.49.9-1
  • maintainer: Xavier Roche (DMD)
  • arch: all any
  • std-ver: 4.7.0
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 3.49.2-1.1
  • oldstable: 3.49.4-1
  • stable: 3.49.6-1
  • testing: 3.49.7-1
  • unstable: 3.49.9-1
versioned links
  • 3.49.2-1.1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 3.49.4-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 3.49.6-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 3.49.7-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 3.49.9-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • httrack
  • httrack-doc
  • libhttrack-dev
  • libhttrack3
  • proxytrack
  • webhttrack
  • webhttrack-common
action needed
lintian reports 9 errors high
Lintian reports 9 errors about this package. You should make the package lintian clean getting rid of them.
Created: 2026-06-22 Last update: 2026-06-22 21:48
6 new commits since last upload, is it time to release? normal
vcswatch reports that this package seems to have new commits in its VCS but has not yet updated debian/changelog. You should consider updating the Debian changelog and uploading this new version into the archive.

Here are the relevant commit logs:
commit 594cf0da393fb7f039617853ea0582b211e55e59
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 22:27:18 2026 +0200

    debian: override embedded-library for bundled minizip, lint under debian:sid (#419)
    
    httrack statically links its own patched minizip (src/minizip): it carries a
    zipFlush() API the system libminizip lacks, which htscache.c uses to flush the
    cache .zip so an interrupted crawl leaves a valid archive, plus Android and
    old-zlib portability fixes. The system library can't be substituted until that
    lands upstream, so add justified lintian overrides for the resulting
    embedded-library tag on libhttrack3 and proxytrack.
    
    The tag never showed in CI because the deb job built and linted on the Ubuntu
    runner, whose lintian predates the minizip fingerprint; it only fires on the
    newer lintian the Debian buildds and UDD run. Build and lint the package inside
    a debian:sid container instead, matching the upload target. That also keeps the
    archive legal: a Debian dpkg-deb writes xz members where an Ubuntu host defaults
    to zstd, which Debian's lintian rejects as a malformed deb. And being unable to
    unpack a zstd member, lintian never scans the binaries the embedded-library
    check reads, so the override would otherwise have looked unused.
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

commit 3845cd1fb328febd43d59c84ce14e48f7903742e
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 21:18:53 2026 +0200

    Store the DNS cache in a coucal hashtable (#420)
    
    The resolver cache was a hand-rolled singly-linked list with a dummy head
    node: O(n) lookup, O(n^2) build, and each record carried its own next
    pointer plus an inline copy of the hostname key. Swap it for coucal, the
    hashtable already used for the backing cache and the ready slots, keyed by
    hostname with the address record as the value.
    
    coucal owns the records (freed through a value handler on coucal_delete)
    and dups the key itself, so t_dnscache sheds both its next link and its
    inline iadr string and becomes a pure address record. The state field
    keeps the same pointer width (t_dnscache* -> coucal), so the installed
    htsopt.h layout and the ABI are unchanged.
    
    Behaviour is identical: same -1/0/>0 lookup contract, same negative
    caching, same resolve-once semantics, all under the existing
    opt->state.lock (coucal is not internally serialized against the FTP/web
    threads). The DNS self-test exercises the full contract black-box and
    passes unchanged.
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

commit 94bffb080495e46d0408ce7e7aa59703f966c507
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 20:56:18 2026 +0200

    Fall back to the next address when a connect fails or stalls (#418)
    
    * Resolve hosts to multiple addresses and cache the full list
    
    The DNS cache kept a single address per host and the resolver copied only
    the head of getaddrinfo's result, discarding the rest. That leaves no
    fallback when the chosen address is unreachable (e.g. a blackholed IPv6 on a
    dual-stack host) -- the root of the "stuck on connect" stalls.
    
    Widen t_dnscache to hold up to HTS_MAXADDRNUM addresses in resolver order and
    walk ai_next when resolving. New hts_dns_resolve_all() exposes the list;
    hts_dns_resolve2() still returns the first address, so existing callers are
    unchanged. newhttp_addr() connects to a chosen candidate index (newhttp() is
    the index-0 wrapper), for the connect-fallback path added next.
    
    No ABI change: t_dnscache is engine-internal (httrackp holds only a pointer;
    no plugin reads its fields) and the htsblk/lien_back layout is untouched.
    
    The DNS self-test now covers the list path: count, resolver order, the
    family filter, and clamping past HTS_MAXADDRNUM.
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    Signed-off-by: Xavier Roche <roche@httrack.com>
    
    * Fall back to the next address when a connect fails or stalls
    
    A slot connected to a single resolved address and waited the full slot
    timeout (default 120s) if that address was dead -- a blackholed IPv6 on a
    dual-stack host would stall the whole mirror. With the cache now holding the
    full address list, retry the next address instead of failing.
    
    In back_wait, a connecting slot probes the resolved address count once, then:
    on a refused/failed connect (a new SO_ERROR check at connect completion, since
    a failed non-blocking connect is reported writable too) it falls back
    immediately; on a stalled connect it falls back after a short per-candidate
    deadline (min(timeout, 10s)) rather than the full timeout. The last candidate
    keeps the full timeout, so single-address hosts are unchanged. Per-slot state
    (current index, count, connect start) lives in struct_back, parallel to the
    slot array -- no htsblk/lien_back layout change, so the ABI is untouched.
    
    back_connect_fallback_due() (the deadline decision) and newhttp_addr()'s
    address selection are unit-tested through the DNS mock.
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    Signed-off-by: Xavier Roche <roche@httrack.com>
    
    * Add HTTRACK_DEBUG_RESOLVE and a deterministic connect-fallback test
    
    Exercising the connect fallback needs a host that resolves to a dead address
    first and a live one next, deterministically and offline. A true SYN
    black-hole can't be simulated without root, but a refused address can.
    
    HTTRACK_DEBUG_RESOLVE="host:ip[,ip...]" pins a host's resolution to a fixed
    address list (curl --resolve style), reusing the PR1 resolver seam: an
    addrinfo backend that synthesizes the listed addresses for the named host and
    delegates other hosts to libc (copying into its own allocations so one
    freeaddrinfo frees both). It is a debug/test hook, inert unless the env var is
    set, and IPv6-build-only like the rest of the resolver list.
    
    The new local crawl test binds the server to 127.0.0.1 and resolves a host to
    127.0.0.2 (refused) then 127.0.0.1: the mirror only succeeds via the fallback.
    A V6_SUPPORT substitution (mirroring HTTPS_SUPPORT) lets it skip on non-IPv6
    builds.
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    Signed-off-by: Xavier Roche <roche@httrack.com>
    
    ---------
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

commit a5c86e7e89d1ea32665ba512698b8fcb87573412
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 19:03:55 2026 +0200

    Add a mockable resolver backend and a DNS resolver/cache self-test (#417)
    
    Route the getaddrinfo resolver through a swappable backend pair
    (getaddrinfo/freeaddrinfo) that defaults to the libc resolver, so the
    self-test can script DNS answers in-process with no network. The pair is
    needed because a fake allocates its own addrinfo chain and must free it
    with a matching deallocator.
    
    Drive it from a new 'httrack -#D' debug subcommand backed by
    htsdns_selftest.c: a scripted getaddrinfo checks address family,
    single-address selection, the -@i4/-@i6 family filter, negative caching,
    and that a cached host is resolved only once. tests/01_engine-dns.test
    runs it.
    
    No behavior change: the default backend is the libc resolver, one
    indirect call on the cold resolve path. The seam stays internal (no
    HTSEXT_API), so the exported ABI is unchanged. This is groundwork for the
    multi-address record and connect fallback that fix the dead-IPv6 connect
    stall; the dual-stack assertion pins today's single-address behavior and
    will widen with that change.
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

commit 54f5717057aa6b0ccbd0fd3525cb031d73407a24
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 09:03:59 2026 +0200

    Silence coucal hashtable stats on the default log handler (#416)
    
    coucal_delete() logs a per-table stats summary at info level. For tables
    without their own handler (webhttrack's NewLangStr/NewLangStrKeys), these
    went through default_coucal_loghandler, which printed every level, so
    plain `webhttrack` startup dumped two "hashtable ... summary:" lines to
    the console.
    
    Drop info-and-below messages there unless debugging is on (hts_dgb_init,
    i.e. HTS_LOG / hts_debug); warnings and critical errors still always
    print.
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

commit 40fc9de360dc7fe69641dd2825b58eb542de88b6
Author: Xavier Roche <roche@httrack.com>
Date:   Mon Jun 22 08:04:19 2026 +0200

    debian: rewrite copyright in DEP-5 format, credit all authors (#415)
    
    The free-form debian/copyright credited only Xavier Roche, but the source
    tree bundles code from other authors under additional licenses that went
    unlisted: Yann Philippot (src/htsjava.*, GPL-3+), the minizip code by
    Gilles Vollant, Mathias Svensson, Even Rouault and Info-ZIP (Zlib),
    Colin Plumb's md5.c (public domain), and the coucal library (BSD-3-clause)
    with Austin Appleby's murmurhash3.h (public domain).
    
    Convert to machine-readable DEP-5 and add a Files stanza per component, as
    requested in the Debian NEW review of 3.49.9-1.
    
    Signed-off-by: Xavier Roche <roche@httrack.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Created: 2024-02-14 Last update: 2026-06-24 11:02
Standards version of the package is outdated. wishlist
The package should be updated to follow the last version of Debian Policy (Standards-Version 4.7.4 instead of 4.7.0).
Created: 2024-04-07 Last update: 2026-06-22 13:30
testing migrations
  • This package is part of the ongoing testing transition known as auto-httrack. Please avoid uploads unrelated to this transition, they would likely delay it and require supplementary work from the release managers. On the other hand, if your package has problems preventing it to migrate to testing, please fix them as soon as possible. You can probably find supplementary information in the debian-release archives or in the corresponding release.debian.org bug.
  • This package will soon be part of the auto-openssl transition. You might want to ensure that your package is ready for it. You can probably find supplementary information in the debian-release archives or in the corresponding release.debian.org bug.
  • excuses:
    • Migration status for httrack (3.49.7-1 to 3.49.9-1): Waiting for test results or another package, or too young (no action required now - check later)
    • Issues preventing migration:
    • ∙ ∙ Too young, only 3 of 5 days old
    • Additional info (not blocking):
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/h/httrack.html
    • ∙ ∙ Reproduced on amd64 - info
    • ∙ ∙ Reproduced on arm64 - info
    • ∙ ∙ Reproduced on armhf - info
    • ∙ ∙ Reproduced on i386 - info
    • Not considered
news
[rss feed]
  • [2026-06-22] Accepted httrack 3.49.9-1 (source amd64 all) into unstable (Debian FTP Masters) (signed by: Xavier Roche)
  • [2026-06-22] Accepted httrack 3.49.8-2 (source amd64 all) into unstable (Debian FTP Masters) (signed by: Xavier Roche)
  • [2026-06-20] Accepted httrack 3.49.8-1 (source) into unstable (Xavier Roche)
  • [2026-06-12] httrack 3.49.7-1 MIGRATED to testing (Debian testing watch)
  • [2026-06-06] Accepted httrack 3.49.7-1 (source) into unstable (Xavier Roche)
  • [2025-03-17] httrack 3.49.6-1 MIGRATED to testing (Debian testing watch)
  • [2025-03-11] Accepted httrack 3.49.6-1 (source) into unstable (Xavier Roche)
  • [2024-02-02] httrack 3.49.5-1 MIGRATED to testing (Debian testing watch)
  • [2024-01-27] Accepted httrack 3.49.5-1 (source) into unstable (Xavier Roche)
  • [2023-01-25] httrack 3.49.4-1 MIGRATED to testing (Debian testing watch)
  • [2023-01-14] Accepted httrack 3.49.4-1 (source) into unstable (Xavier Roche)
  • [2023-01-13] Accepted httrack 3.49.3-1 (source) into unstable (Xavier Roche)
  • [2021-01-07] httrack 3.49.2-1.1 MIGRATED to testing (Debian testing watch)
  • [2021-01-01] Accepted httrack 3.49.2-1.1 (source) into unstable (Holger Levsen)
  • [2017-06-20] httrack 3.49.2-1 MIGRATED to testing (Debian testing watch)
  • [2017-05-20] Accepted httrack 3.49.2-1 (source all amd64) into unstable (Xavier Roche)
  • [2017-04-01] Accepted httrack 3.49.1-1 (source all amd64) into unstable (Xavier Roche)
  • [2016-09-04] httrack 3.48.24-1 MIGRATED to testing (Debian testing watch)
  • [2016-08-24] Accepted httrack 3.48.24-1 (source all amd64) into unstable (Xavier Roche)
  • [2016-07-02] httrack 3.48.23-1 MIGRATED to testing (Debian testing watch)
  • [2016-06-26] Accepted httrack 3.48.23-1 (source all amd64) into unstable (Xavier Roche)
  • [2016-05-03] httrack 3.48.22-1 MIGRATED to testing (Debian testing watch)
  • [2016-04-26] Accepted httrack 3.48.22-1 (source all amd64) into unstable (Xavier Roche)
  • [2015-04-27] httrack 3.48.21-1 MIGRATED to testing (Britney)
  • [2015-03-14] Accepted httrack 3.48.21-1 (source all amd64) into unstable (Xavier Roche)
  • [2014-10-26] httrack 3.48.20-1 MIGRATED to testing (Britney)
  • [2014-10-15] Accepted httrack 3.48.20-1 (source all amd64) into unstable (Xavier Roche)
  • [2014-08-08] httrack 3.48.19-1 MIGRATED to testing (Britney)
  • [2014-07-28] Accepted httrack 3.48.19-1 (source all amd64) into unstable (Xavier Roche)
  • [2014-07-28] httrack 3.48.18-1 MIGRATED to testing (Britney)
  • 1
  • 2
bugs [bug history graph]
  • all: 0
links
  • homepage
  • lintian (9, 0)
  • buildd: logs, reproducibility, cross
  • popcon
  • browse source code
  • other distros
  • security tracker
  • screenshots
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 3.49.9-1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing