Skip to content
Snippets Groups Projects
  1. Mar 20, 2024
  2. Oct 12, 2023
  3. Apr 24, 2023
  4. Apr 17, 2023
  5. Dec 20, 2022
  6. Mar 07, 2022
  7. Dec 17, 2021
    • Jan Hendrik Farr's avatar
      libfetch: Allow special characters in http basic auth · 0f50f9ff
      Jan Hendrik Farr authored and Timo Teräs's avatar Timo Teräs committed
      Currently, special characters in the username or password are not
      handled correctly (when set in $http_proxy and $https_proxy). They
      should be percent encoded in the environment variables then decoded
      by libfetch and reencoded using base64. This implementation is mainly
      taken from the current FreeBSD source and adapted to the apk-tools
      version of libfetch.
      
      fixes #10775
      0f50f9ff
  8. Dec 14, 2021
  9. Dec 09, 2021
  10. Aug 03, 2021
    • Timo Teräs's avatar
      libfetch: fix http chunked mode handling · b30e94c0
      Timo Teräs authored
      Unbreak handling of base 16 in fetch_parseuint(). It is used
      only in http chunked mode handling.
      
      Fixes: "libfetch: fix range checking for http/ftp protocol parsing"
      b30e94c0
  11. Jul 26, 2021
  12. Jul 16, 2021
  13. Mar 16, 2021
  14. Mar 13, 2021
    • Martin Vahlensieck's avatar
      Use correct port when redirected · 8e993fe9
      Martin Vahlensieck authored and Timo Teräs's avatar Timo Teräs committed
      If server redirects from http to https, libfetch detects this, but
      wrongly uses the old url scheme to determine the port. This subsequently
      leads to the following OpenSSL error:
      
      139741541575496:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:331:
      
      Using the new scheme fixes this.  This error message comes from trying
      to connect to port 80 with TLS, it can also be observed by issuing
        $ openssl s_client -connect alpinelinux.org:80
      
      This bug was introduced in commit:
      7158474f libfetch: keep http auth only if redirect is for the same host
      8e993fe9
  15. Jan 27, 2021
  16. Jan 19, 2021
    • Timo Teräs's avatar
      libfetch: harden URL parsing · bcbcbfc1
      Timo Teräs authored
      Treat URLs with too long individual components as malformed instead
      of silently truncating that field. There might be unexpected results
      if hostname, username or password field gets truncated.
      bcbcbfc1
    • Timo Teräs's avatar
      libfetch: fix connection pooling for proxied http/https requests · acca5cbf
      Timo Teräs authored
      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.
      acca5cbf
    • Timo Teräs's avatar
    • Conny Seifert's avatar
      libfetch: fix parsing of proxy response to CONNECT requests · 4087ab92
      Conny Seifert authored and Timo Teräs's avatar Timo Teräs committed
      Instead of skipping just one line, properly parse the response headers.
      
      [TT: reworded commit message]
      4087ab92
  17. Jan 17, 2021
  18. Jan 08, 2021
  19. Oct 09, 2020
  20. Oct 06, 2020
  21. May 29, 2020
  22. May 06, 2020
    • Timo Teräs's avatar
      add script to autogenerate help from man pages · 5258b484
      Timo Teräs authored
      This creates main help like:
      --
      usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]
      
      Package installation and removal:
        add        Add packages to WORLD and commit changes
        del        Remove packages from WORLD and commit changes
      
      System maintenance:
        fix        Check WORLD against the system and ensure consistency
        update     Update repository indexes
        upgrade    Install upgrades available from repositories
        cache      Commands related to the management of an offline package cache
      
      Querying package information:
        info       Give detailed information about packages or repositories
        list       List packages matching a pattern or other criteria
        dot        Generate graphviz graphs
        policy     Show repository policy for packages
      
      Repository maintenance:
        index      Create repository index file from packages
        fetch      Download packages from global repositories to a local directory
        manifest   Show checksums of package contents
        verify     Verify package integrity and signature
      
      Miscellaneous:
        audit      Audit directories for changes
        stats      Show statistics about repositories and installations
        version    Compare package versions or perform tests on version strings
      
      This apk has coffee making abilities.
      --
      
      And applet specific help like:
      --
      usage: apk add [<OPTIONS>...] PACKAGES...
      
      Description:
        apk add adds the requested packages to WORLD and installs (or upgrades)
        them if not already present, ensuring all dependencies are met.
      
      Options:
        --initdb         Initialize a new package database
        -l, --latest     Disables normal heuristics for choosing which repository to install a
        -u, --upgrade    When adding packages which are already installed, upgrade them rather
        -t, --virtual NAME
                         Instead of adding the specified packages to WORLD, create a new
        --no-chown       Do not change file owner or group
      --
      5258b484
  23. Apr 01, 2020
  24. Mar 25, 2020
    • Timo Teräs's avatar
      libfetch: fixups to packetization socket option setting · eae92bba
      Timo Teräs authored
      - split the code to a helper function
      - do not set sockets to corked state when putting back to
        cache so socket state is always deterministic
      - cork/uncork also when sending CONNECT to a proxy, this
        can reduce a little bit the latency how fast the packet
        gets sent out
      - also pair corking with uncorking in http_request to make
        it more obvious pairing
      eae92bba
    • Alex Wauck's avatar
      libfetch: minor HTTP handling improvement · 09dbe46a
      Alex Wauck authored and Timo Teräs's avatar Timo Teräs committed
      The recent TCP_CORK change missed this bit of code.  This change
      should improve performance a bit when making HTTP requests by calling
      http_cmd only once instead of three times.
      09dbe46a
  25. Feb 18, 2020
    • Timo Teräs's avatar
      libfetch: support TCP_CORK · 271047cc
      Timo Teräs authored
      Unfortunately libfetch operates on raw sockets and is sending
      each HTTP request line using separate syscall which causes the
      HTTP request to be sent as multiple packets over the wire in most
      configurations. This is not good for performance, but can also
      cause subtle breakage if there's DPI firewall that does not get
      the Host header.
      
      Incidentally, it seems that on BSDs libfetch already sets
      TCP_NOPUSH optimize the packetization. This commit adds same
      logic for using TCP_CORK if available. When using TCP_CORK
      there is no requirement to set TCP_NODELAY as uncorking will
      also cause immediate send. Keep TCP_NODELAY in the fallback
      codepaths.
      
      Long term, it might make sense to replace or rewrite libfetch
      to use application level buffering.
      271047cc
  26. Feb 13, 2019
    • Timo Teräs's avatar
      fix strncpy bounds errors · 44daf808
      Timo Teräs authored
      error: 'strncpy' specified bound 4096 equals destination size [-Werror=stringop-truncation]
      
      Based on patch by Elan Ruusamäe <glen@delfi.ee>
      44daf808
  27. Sep 05, 2018
  28. Jan 31, 2018
    • A. Wilcox's avatar
      libfetch: support OpenSSL · 36f5cf8e
      A. Wilcox authored
      TLS_client_method is a LibreSSL extension.
      SSLv23_client_method is generic, and doesn't mean SSL v2/v3 only.
      36f5cf8e
  29. Jan 03, 2018
  30. Oct 06, 2017
  31. Oct 05, 2017
    • Timo Teräs's avatar
      libfetch: improve ssl connections · 52fd85a8
      Timo Teräs authored
      loosely based on the freebsd implementation, implement https
      connection settings to override CA, and use client certificate.
      
      new files supported in /etc/apk/:
        ca.pem   - if exists, it contains CAs acceptable for https
      	     (otherwise system wide CAs are used)
        crl.pem  - if ca.pem is used, this is the (optional) CRL for it
        cert.pem - used as client authentication certificate (+ key)
        cert.key - used as client key (can be also inside cert.pem)
      52fd85a8
Loading