2026-09-21 Tim Rühsen <tim.ruehsen@gmx.de>

     Release v2.3.0

2026-09-21 Tim Rühsen <tim.ruehsen@gmx.de>

     * bootstrap: Update

2026-09-21 Tim Rühsen <tim.ruehsen@gmx.de>

     * gnulib: Update

2026-09-16 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix combo of --page-requisites --no-parent --level 0 / --mirror
     
     * src/wget.c (html_parse): Fix check for config.level value 0.
     * tests/test-page-requisites.c: Add test with asset outside parent dir.
     
     Fixes https://github.com/rockdaboot/wget2/issues/390

2026-08-14 Jenson Johnathon Reggentin <mail@jregg.de>

     * src/wget.c (http_create_request): Only continue existing regular files
     
     Copyright-paperwork-exempt: Yes

2026-08-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c (queue_url_from_local): Check excluded domains before adding URL to blacklist

2026-08-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c: Fix --no-clobber

2026-08-07 Tim Rühsen <tim.ruehsen@gmx.de>

     README.md: Change 'Sponsored by' into 'Supported by'

2026-08-06 Tim Rühsen <tim.ruehsen@gmx.de>

     README.md: Add Sponsored by section with Jetbrains logo

2026-08-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c (queue_url_from_local): Do not log userinfo

2026-08-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/stats_site.c (print_csv_entry): Do not write credentials to output file

2026-07-31 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/dl.c (convert_to_path_if_not): Add semicolon

2026-07-30 Tim Rühsen <tim.ruehsen@gmx.de>

     Convert CSS files with --convert-links
     
     * include/wget/wget.h (wget_css_get_urls): Make base param const.
     * libwget/css_url.c (urls_to_absolute): Make base param const,
       (wget_css_get_urls): Likewise.
     * src/wget.c: Add CONTENT_TYPE_CSS, add css_uris to conversion_t,
       (remember_for_conversion): Add param css_uris,
       New helper function convert_file(),
       (convert_links): Add CSS handling,
       (css_parse): Parse and store URIs via remember_for_conversion().
     * tests/Makefile.am: Add test-convert-links-css.
     * tests/test-convert-links-css.c: New test file.

2026-07-29 Tim Rühsen <tim.ruehsen@gmx.de>

     Add Content-Length: 0, following RFC 9110
     
     * libwget/http.h: Declare wget_http_method_defines_content().
     * libwget/http.c: Define wget_http_method_defines_content(),
       (wget_http_request_to_buffer): Add Content-Length header as
       required by RFC 9110.
     * libwget/http2.c (wget_http2_send_request): Likewise.

2026-07-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml: Include Gitlab standard workflow template

2026-07-28 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix combining --domains with --span-hosts

2026-07-28 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix --directory-prefix/-P
     
     This change makes -P wget1 compatible.
     
     * include/wget/wget.h: Add function declaration for wget_path_sanitize().
     * libwget/utils.c: New function wget_path_sanitize().
     * src/options.c: Create a sanitized, absolute path for --directory-prefix.
     * unit-tests/test.c: Test wget_path_sanitize().

2026-07-27 Tim Rühsen <tim.ruehsen@gmx.de>

     Truncate file names if too long
     
     * configure.ac: Check for pathconf().
     * src/blacklist.c: Removed an unrelated comment.
     * src/wget.c: New CHOMP_BUFFER, new function get_max_length(),
       new function maybe_truncate_filename(), (prepare_file): Truncate
       file name if needed.

2026-07-26 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/html_url.c: Initialize url.url_heap_allocated

2026-07-26 Tim Rühsen <tim.ruehsen@gmx.de>

     Use IPv6 and IPv4 in the MHD test server
     
     * tests/libtest.c: Use dual stack IPv6 + IPv4.
     * tests/test-cert-key-usage.c: Change exit status from NETWORK to TLS.

2026-07-26 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix URL unescaping to be Wget1 compatible
     
     * fuzz/libwget_iri_fuzzer.c: Add 0 flags to wget_iri_parse_base().
     * include/wget/wget.h: Add flags to wget_iri_parse_base().
     * libwget/iri.c: Add flags to wget_iri_parse_base().
     * src/host.c: Add 0 flags to wget_iri_parse_base().
     * src/wget.c (queue_url_from_local): Call wget_iri_parse_base with
       WGET_IRI_KEEP_AS_IS.

2026-07-26 Tim Rühsen <tim.ruehsen@gmx.de>

     Remove port from HSTS
     
     * fuzz/libwget_hsts_fuzzer.c: Remove port.
     * include/wget/wget.h: Remove por from wget_hsts_host_match_fn()
       and from wget_hsts_db_add_fn().
     * libwget/hsts.c: Drop port.
     * src/wget.c: Drop port from HSTS callers.
     * tests/test-plugin-dummy.c: Drop port from HSTS tests.
     * unit-tests/test.c: Fix tests.
     
     Reported-by: baradika <nexzter.net@gmail.com>

2026-07-26 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (Debian/WolfSSL): Allow failure

2026-07-24 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/utils.c: Fix slash handling in paths for Win32

2026-07-24 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c (get_header): Fix fo Win32

2026-07-24 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/dl.c (convert_to_path_if_not): Fix for Win32

2026-07-24 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl.c (ssl_default_path): Fix for Win32

2026-07-24 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml: Fix Coverity runner

2026-07-23 Tim Rühsen <tim.ruehsen@gmx.de>

     * SECURITY.md: Fix typo

2026-07-23 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/http_parse.c (wget_http_parse_header_line): Require full X- header name

2026-07-23 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c (match_subdir): Fix off-by-one mismatch

2026-07-21 Tim Rühsen <tim.ruehsen@gmx.de>

     * SECURITY.md: Updated and added an LLM-specific section

2026-07-16 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix https proxy authentication via CONNECT
     
     * libwget/http.c (establish_proxy_connect): Add Proxy-Authorization if needed,
       (wget_http_open): Craft the auth token.
     * libwget/http.h (struct wget_http_connection_st): Add need_connect variable.
     * libwget/http_highlevel.c (wget_http_get): Drop Authorization headers on
       redirect.
     * tests/Makefile.am (EXTRA_DIST): Add test-https-proxy-auth-server.py,
       (TESTS): Add test-https-proxy-auth.sh.
     * tests/test-https-proxy-auth-server.py: Add helper python server.
     * tests/test-https-proxy-auth.sh: New test.

2026-07-20 Tim Rühsen <tim.ruehsen@gmx.de>

     Replace atoi, atol, atoll with error checking functions
     
     * bootstrap.conf: Add xstrtol and xstrtoll modules.
     * fuzz/libwget_xml_parse_buffer_fuzzer.c: Fix compiler warning.
     * libwget/*.c, src/*.c: Use xstrtol and xstrtoll.

2026-07-18 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml: Set MALLOC_PERTURB_

2026-07-18 Tim Rühsen <tim.ruehsen@gmx.de>

     Prevent metalink path traversal on Windows
     
     * libwget/metalink.c (sanitized_filename): Fix for Windows.
     * src/job.c (job_validate_file): Remove superfluous logs.
     * src/wget.c (restrict_file_name): New function,
       (process_response): De-duplicate code,
       (metalink_parse_localfile): De-duplicate code.

2026-07-12 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/options.c (preload_dns_cache): Read from fuzzing buffer during fuzzing

2025-08-08 Tim Rühsen <tim.ruehsen@gmx.de>

     Do not unescape Location URLs
     
     * include/wget/wget.h: New function declaration wget_iri_parse_ex().
     * libwget/iri.c: New function wget_iri_parse_ex().
     * src/wget.c: Use wget_iri_parse_ex().
     * tests/test-redirection.c: Amend Location header.
     * unit-tests/test.c: New test test_iri_parse();

2026-07-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/options.c (read_config_expand): fuzzing mode check

2026-07-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (DebianTesting): Enable manylibs

2026-07-09 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/options.c (parse_timeout): Print error if value is missing
     
     Fixes issue https://oss-fuzz.com/testcase-detail/5729920299630592
     
     Reported-by: OSS-Fuzz

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-redirection.c: Replace 'grep' with code

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     Skip test for timing of rate limiting for WIN32
     
     * tests/test-limit-rate-http2.c: Skip timing check on WIN32.
     * tests/test-limit-rate.c: Likewise.

2026-07-06 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/cookie_parse.c (wget_cookie_parse_setcookie): Avoid integer overflow

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (verify_certificate_callback): Improve verification logic

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (wget_ssl_set_config_int): Properly convert int to bool

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (send_ocsp_request): Call gnutls_free instead of xfree

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (verify_certificate_callback): Remove redundant call to cert_verify_hpkp

2026-07-02 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (print_x509_certificate_info): Print SHA256 hash instead of MD5

2026-06-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml: Use buildenv-wget2-mingw and buildenv-wget2-mingw-static

2026-06-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (pages): Install graphviz

2026-06-27 Tim Rühsen <tim.ruehsen@gmx.de>

     * cfg.mk: Exclude unit-tests/http-state/ from syntax-check

2026-06-27 Tim Rühsen <tim.ruehsen@gmx.de>

     Don't do robots exclusion if robots is switched off
     
     * src/host.c (_host_remove_job): Check for robots=on.
     * tests/test-robots-off.c: Add test.

2026-06-27 Tim Rühsen <tim.ruehsen@gmx.de>

     Prepare Cookie testing with https://github.com/abarth/http-state

2026-06-21 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_wolfssl.c (do_handshake): Map SOCKET_ERROR_E to WGET_E_CONNECT

2026-06-21 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/http_parse.c (wget_http_parse_content_disposition): Avoid compiler warning

2026-06-21 Tim Rühsen <tim.ruehsen@gmx.de>

     Improve test for bad certificate Key Usage (KU)
     
     * tests/certs/server-bad-ku-template.txt: Add KU to template, previously
       certtool skipped adding it without setting the exit status to failure.
     * tests/certs/x509-server-bad-ku-cert.pem: Newly created certificate.
     * tests/test-cert-key-usage.c: Amended check for the wget2 exit code.

2026-06-12 Tim Rühsen <tim.ruehsen@gmx.de>

     Improve path traversal prevention for Content-Disposition
     
     * libwget/http_parse.c: (sanitize_filename) Fix for Win32 and fix component
       removal, (wget_http_parse_content_disposition) Build relative paths instead
       of just using the basename.
     * unit-tests/test-http-parse.c: Fix expected paths.

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     Stabilize CI (ignore rate limiter times when using valgrind)
     
     * tests/test-limit-rate-http2.c: Ignore elapsed time with valgrind.
     * tests/test-limit-rate.c: Likewise.

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/html_url.c (html_get_url): Silence clang warnings

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Disable some clang-21 warnings

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * gnulib: Update

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * lib/Makefile.am: Define empty MAINTAINERCLEANFILES

2025-02-12 KO Myung-Hun <komh78@gmail.com>

     Port ANSI escape codes to OS/2
     
     * libwget/bar.c (restore_cursor_position): Use ANSI escape codes for
     OS/2.
     (bar_print_slot): Likewise.
     (wget_bar_print): Likewise.
     (wget_bar_write_line_ext): Likewise.
     
     Copyright-paperwork-exempt: Yes

2025-02-09 KO Myung-Hun <komh78@gmail.com>

     Support dynamic loading on OS/2
     
     * src/dl.c (dl_file_lookup): Symbols may have a underscore prefix on
     OS/2.
     (PATTERNS): Define it for OS/2.
     * tests/plugin_tests.h (LOCAL_NAME): Likewise.
     * unit-tests/test-dl.c (BUILD_NAME): Likewise.
     (LOCAL_NAME): Likewise.
     
     Copyright-paperwork-exempt: Yes

2025-02-09 KO Myung-Hun <komh78@gmail.com>

     Use DOS-like path styles on OS/2
     
     * fuzz/main.c: Define SLASH to '\' on OS/2.
     (main): Ignore .exe on OS/2.
     * src/dl.c (dl_match): '\' is used as a dir separator on OS/2.
     * src/options.c (init): ';' is used as a path separator on OS/2.
     * src/plugin.c (plugin_db_load_from_envvar): ';' is used as a path
     separator and '\' as a dir separator on OS/2.
     
     Copyright-paperwork-exempt: Yes

2025-02-09 KO Myung-Hun <komh78@gmail.com>

     Export symbols correctly on OS/2
     
     * include/wget/wget.h: Define WGETAPI and WGET_EXPORT for OS/2.
     
     Copyright-paperwork-exempt: Yes

2025-02-09 KO Myung-Hun <komh78@gmail.com>

     Set default paths for SSL credentials on OS/2
     
     * libwget/ssl.c (wget_ssl_default_cert_dir): Return a default dir for
     OS/2.
     (wget_ssl_default_ca_bundle_path): Return a default path for OS/2.
     
     Copyright-paperwork-exempt: Yes

2025-02-08 KO Myung-Hun <komh78@gmail.com>

     Implement wget_get_screen_size on OS/2
     
     * libwget/utils.c (wget_get_screen_size) [OS/2]: Implemented.
     
     Copyright-paperwork-exempt: Yes

2025-02-08 KO Myung-Hun <komh78@gmail.com>

     Do not assume that IPv6 support is available
     
     OS/2 does not support IPv6, yet.
     
     * libwget/utils.c (cidr_v6_match): Guard with HAVE_IPV6.
     (wget_http_match_no_proxy): Guard IPv6 codes with HAVE_IPV6.
     
     Copyright-paperwork-exempt: Yes

2026-06-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (CommitCheck): Drop running spell-checker

2026-06-10 Tim Rühsen <tim.ruehsen@gmx.de>

     * cfg.mk: set up codespell syntax-check

2026-06-10 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c: Initialize rate limiter on first packet

2026-06-10 Tim Rühsen <tim.ruehsen@gmx.de>

     src/wget.c: Don't send If-Modified-Since when resuming download

2026-06-10 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix memory leaks and heap-allocation ownership
     
     * examples/http_get2.c: Amend wget_http_send_request param.
     * examples/http_multi_get.c: Likewise.
     * examples/websequencediagram.c: Likewise.
     * fuzz/libwget_http_client_fuzzer.c: Likewise.
     * include/wget/wget.h: New typedef wget_http_free_user_data_callback,
       (wget_http_request_st): New member user_data_callback,
       New function wget_http_request_set_free_user_data_cb,
       Changed type of second param of wget_http_send_request.
     * libwget/http.c: New function wget_http_request_set_free_user_data_cb,
       Changed type of second param of wget_http_send_request,
       Added debug lines in wget_http_get_response_cb,
       Free request if response is missing.
     * libwget/http.h: Change type of second param of wget_http2_send_request.
     * libwget/http2.c: Change type of second param of wget_http2_send_request.
     * libwget/http_highlevel.c: Change second param of wget_http_send_request,
       Set request data before sending.
     * libwget/http_parse.c: Call wget_http_free_request from wget_http_free_response.
     * libwget/ssl_gnutls.c: Change second param of wget_http_send_request.
     * libwget/ssl_openssl.c: Free http response in verify_ocsp.
     * src/wget.c: New function free_user_data,
       Call wget_http_request_set_free_user_data_cb in http_send_request,
       Do not free context in http_receive_response.

2026-06-09 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/html_url.c (html_get_url): Free heap-allocated URLs

2026-06-09 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml: Configure with -fsanitize=address,undefined

2026-06-09 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-interrupt-response.c: Set --waitretry=1

2026-06-09 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix exit code after failed retries
     
     * src/host.c: Set EXIT_STATUS_NETWORK.
     * src/wget.c: Set EXIT_STATUS_PROTOCOL.
     * tests/Makefile.am: Add tests/test-connection-failure.
     * tests/test-connection-failure.c: New file.

2026-05-31 jensonjohnathon <mail@jregg.de>

     Fix for a stack overflow during recursive parsing of local files
     
     * src/wget.c removed the recursion, parsing of localfiles is now a
       special job handeled by downloader_thread
     * src/wget_job.h added the new flag parse_only to indicate that the job
       shall only be parsed without sending any requests
     
     Copyright-paperwork-exempt: Yes

2026-06-06 Tim Rühsen <tim.ruehsen@gmx.de>

     * unit-tests/test-html-get-urls.c: Fix nullable issue detected by scan-build

2026-06-01 Lakshmi-Surekha <Lakshmi.Kovvuri@ibm.com>

     * fuzz/libwget_http_client_fuzzer.c: fix getnameinfo prototype on AIX

2026-05-17 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix some doc / help text / default mismatches

2026-05-17 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/http_parse.c (wget_http_parse_content_disposition): Fix Nullability

2026-05-17 Tim Rühsen <tim.ruehsen@gmx.de>

     Support iframe srcdoc
     
     * libwget/html_url.c (html_get_url): Add code for iframe/srcdoc.
     * unit-tests/Makefile.am: Add new test file.
     * unit-tests/test-html-get-urls.c: New test file.

2025-03-01 Jesse Rosenstock <jmr@google.com>

     docs/wget2.md: Correct default data dir
     
     If $XDG_DATA_HOME is not set, files are stored in ~/.local/share/wget/,
     not ~/.local/wget/.

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_wolfssl.c: Respect NO_OLD_TLS

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     Parse HTML tags data-src and data-srcset
     
     * libwget/html_url.c (char attrs): Add data-src and data-srcset,
       (html_get_url): Treat data-srcset like srcset.
     * tests/Makefile.am: Add new file tests/test-data-src.c.
     * tests/test-data-src.c: New test file.

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix --waitretry
     
     * src/host.c (host_increase_failure): Apply config.waitretry.
     * src/wget.c (process_response_header): Likewise,
       (downloader_thread): Likewise.
     * src/options.c: Set default for --waitretry to 10s as documented.
     * tests/Makefile.am: Add new test test-waitretry.
     * tests/test-waitretry.c: New test.

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/metalink.c (sanitized_filename): Sanitize Windows paths

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     Sanitize filename from Content-Disposition
     
     * libwget/http_parse.c: New function sanitize_filename,
       (wget_http_parse_content_disposition): Call sanitize_filename.
     * unit-tests/Makefile.am: Add unit-tests/test-http-parse.c.
     * unit-tests/test-http-parse.c: New test.

2026-05-16 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/xml.c: Remove trailing spaces

2026-05-14 jensonjohnathon <mail@jregg.de>

     Limit max recursion depth of XML parsing to 1024
     
     * include/wget/wget.h: New Error Code WGET_E_XML_MAX_DEPTH.
     * libwget/error.c: New Error Code WGET_E_XML_MAX_DEPTH.
     * libwget/xml.c: Added check for XML depth to avoid stack overflow.
     
     Copyright-paperwork-exempt: Yes

2026-05-10 jensonjohnathon <mail@jregg.de>

     * src/wget.c: Print headers without download via --spider -S
     
     Copyright-paperwork-exempt: Yes

2026-04-26 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Use AM_SILENT_RULES([yes])

2026-04-26 Tim Rühsen <tim.ruehsen@gmx.de>

     * bootstrap.conf: Switch away from deprecated gnulib modules

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Use AS_IF consistently

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Add silent-rules to AM_INIT_AUTOMAKE

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Move AC_SYS_LARGEFILE to before AC_PROG_CC

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Remove commented out code

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Remove redundant AC_CANONICAL_HOST

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Fix typo with_libHSTS -> with_libhsts

2026-04-20 Tim Rühsen <tim.ruehsen@gmx.de>

     Use verbose flag in Makefiles consistently
     
     * Makefile.am: Use AM_V_at consistenly.
     * docs/Makefile.am: Likewise.
     * fuzz/Makefile.am: Likewise.
     * tests/Makefile.am: Likewise.

2026-04-25 Tim Rühsen <tim.ruehsen@gmx.de>

     Deduplicate list of gnulib libs
     
     * configure.ac: Use AC_SUBST to build GNULIB_LIBS.
     * libwget/Makefile.am: Use GNULIB_LIBS from configure.ac.
     * src/Makefile.am: Likewise.
     * tests/Makefile.am: Likewise.
     * unit-tests/Makefile.am: Likewise.

2026-02-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c: Improve wget compatibility of --accept/--reject

2026-02-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (verify_certificate_callback): Use gnutls_certificate_verify_peers for key purpose validation

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (wget_ssl_init): Accept system settings

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (Sanitizers/Debian): Fix ilegal instruction failures

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/net.c (tcp_connect): Fix value of errno

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c (verify_certificate_callback): Remove unused variable

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (Scan-Build/Debian): Fix artifacts path

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     tests: Fix test-broken-gzip when zlib is not supported
     
     * tests/test-broken-gzip.c: Handle environments without zlib support.
       Expect raw content in broken.html when WITH_ZLIB is not defined.

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_openssl.c (openssl_init): Support post handshake auth

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     build: fix remaining LIBS pollution and add GCRYPT_LIBS
     
     * configure.ac: Prevent LIBS pollution in AC_SEARCH_LIBS/AC_CHECK_FUNC
     calls for gnutls_hash, EVP_MD_CTX_new, and gcrypt. Define and SUBST
     GCRYPT_LIBS.
     * libwget/Makefile.am (libwget_libadd): Add GCRYPT_LIBS.

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     build: improve configure.ac and cleanup global flag pollution
     
     * configure.ac: Update Autoconf prerequisite to 2.71.
     Require C11 compiler. Stop polluting global LIBS and CFLAGS;
     instead, restore LIBS to OLD_LIBS in fallbacks. Use AM_CFLAGS for
     build-system-specific flags. Use modern AC_CONFIG_MACRO_DIRS macro.
     Fix double negative in SSL/TLS error message. Remove redundant
     CFLAGS/LDFLAGS assignments. Ensure consistent quoting for AC_DEFINE.
     Add missing AC_SUBST for BZ2_LIBS and BZ2_CFLAGS.
     * fuzz/Makefile.am (wget_options_fuzzer_LDADD): Add GPGME_LIBS.
     * libwget/Makefile.am (libwget_libadd): Explicitly include all
     required library LIBS.
     (libwget_la_CPPFLAGS): Add library CFLAGS.
     * src/Makefile.am (AM_CPPFLAGS): Add GPGME_CFLAGS.
     (wget2_LDADD): Add GPGME_LIBS.
     * tests/Makefile.am (libtest_la_CPPFLAGS): Add TEST_CFLAGS and
     GNUTLS_CFLAGS.
     (libtest_la_LIBADD): Add TEST_LIBS and GNUTLS_LIBS.
     * unit-tests/Makefile.am (MYLIBS): Add GPGME_LIBS.
     (AM_CPPFLAGS): Add GPGME_CFLAGS.

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Use AM_CFLAGS instead of tainting CFLAGS

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Use AC_CONFIG_MACRO_DIRS instead of old AC_CONFIG_MACRO_DIR

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Use consistent quoting for AC_DEFINE

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Require autoconf 2.71 and C11

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Remove redundant CFLAGS=$CFLAGS and LDFLAGS=$LDFLAG lines

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * configure.ac: Fix double negation in error message

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * bootstrap.conf: Don't duplicate PACKAGE_GNU in po/Makevars.template

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * bootstrap.conf: Update versions for build prerequisites

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-post-handshake-auth.c: Fix typo

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * bootstrap.conf: Do not fetch wiki with --help or --no-git

2026-02-07 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-post-handshake-auth.c: SKIP for WolfSSL

2026-02-03 Darshit Shah <darnir@gnu.org>

     all: Update Copyright Year

2026-02-03 Darshit Shah <darnir@gnu.org>

     bootstrap: Sync with gnulib

2026-02-03 Darshit Shah <darnir@gnu.org>

     gnulib: Sync with latest

2026-01-25 Sergei Litvin <litvindev@gmail.com>

     Fix propagating --timeout, --connect-timeout and --read-timeout command line options.
     
     * libwget/net.c (set_socket_timeout): New function set_socket_timeout,
       (set_socket_options, tcp_connect, wget_tcp_write): Use set_socket_timeout.
     * libwget/net.h: Declare set_socket_timeout.
     * libwget/ssl_gnutls.c: Make use of set_socket_timeout.
     * libwget/ssl_openssl.c: Likewise.
     * libwget/ssl_wolfssl.c: Likewise.

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     Require libmicrohttpd > 0.9.70
     
     * tests/libtest.c: Remove MHD version check.
     * tests/test-https-enforce-hard3.c: Likewise.
     * tests/test-https-enforce-soft2.c: Likewise.
     * tests/test-post-handshake-auth.c: Likewise.

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_gnutls.c: Require GNUTLS_E_PREMATURE_TERMINATION to exist

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     Require gnutls_transport_get_int() when building with GnuTLS

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     Require GnuTLS >= 3.6.5
     
     * libwget/ssl_gnutls.c: Remove checks for GNUTLS_VERSION_NUMBER.
     * tests/libtest.c: Likewise.
     * tests/test-post-handshake-auth.c: Likewise.

2026-02-01 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c (main): Set exit code 1 if nothing to do

2026-01-31 Tim Rühsen <tim.ruehsen@gmx.de>

     Validate purpose of SSL/TLS certificate checks
     
     * libwget/ssl_gnutls.c (verify_certificate_callback): Check server cert
        purpose,
       (wget_ssl_open): Call gnutls_session_enable_compatibility_mode only if
       cert checks are turned off.
     * libwget/ssl_openssl.c (openssl_init): Set purpose.
     * libwget/ssl_wolfssl.c (do_handshake): Fix return value on cert errors.
     * tests/Makefile: Add test-cert-key-usage.
     * tests/test-cert-key-usage.c: New tests.
     * tests/libtest.c: Allow setting server cert and server key.
     * tests/libtest.h: Add WGET_TEST_HTTPS_CERT_FILE and
       WGET_TEST_HTTPS_KEY_FILE.
     * tests/certs/generate_certs.sh: Add command to generate bad server certs.
     * tests/certs/server-bad-eku-template.txt: New file.
     * tests/certs/server-bad-ku-template.txt: New file.
     * tests/certs/x509-server-bad-eku-cert.pem: New file.
     * tests/certs/x509-server-bad-eku-key.pem: New file.
     * tests/certs/x509-server-bad-ku-cert.pem: New file.
     * tests/certs/x509-server-bad-ku-key.pem: New file.

2026-01-11 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-ocsp-stap.c: Enable test for WolfSSL

2026-01-11 Tim Rühsen <tim.ruehsen@gmx.de>

     Improve WolfSSL/OpenSSL OCSP checks
     
     * libwget/ssl_openssl.c (wget_ssl_open): Correctly return WGET_E_CERTIFICATE.
     * libwget/ssl_wolfssl.c (wget_ssl_init): Support OCSP w/o stapling.
     * src/options.c (init): Set WGET_SSL_OCSP_DATE and WGET_SSL_OCSP_NONCE for WolfSSL.
     * tests/test-ocsp-server.c: Enable more tests for WolfSSL.

2026-01-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/certs: Regenerate

2026-01-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/http_parse.c (wget_http_parse_content_disposition): Use basename as filename

2026-01-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/cookie_parse.c (cookie_normalize_cookie): Only accept secure cookies from HTTPS

2026-01-08 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_wolfssl.c (wget_ssl_open): Enable domain check

2026-01-04 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c: Fix typo and improve output messages
     
     Reported-by: Benno Schulenberg <coordinator@translationproject.org>

2026-01-04 Tim Rühsen <tim.ruehsen@gmx.de>

     Continue bulk downloads with -i after error
     
     * libwget/decompressor.c (wget_decompress): Return error code.
     * libwget/http.c: Return error from wget_decompress().
     * libwget/http2.c: Likewise.
     * tests/Makefile.am: New test test-broken-gzip.
     * tests/test-broken-gzip.c: New test file.

2026-01-03 Tim Rühsen <tim.ruehsen@gmx.de>

     Implement 1xx response skipping for HTTP/2
     
     * libwget/http2.c (on_frame_recv_callback): Skip 1xx responses.
     * tests/Makefile.am: Add test-1xx.
     * tests/libtest.c (h2_on_frame_recv_callback): Send 1xx response if requested from test.
     * tests/libtest.h (struct url): Add new member code_1xx.
     * tests/test-1xx.c: New test file.

2026-01-03 Tim Rühsen <tim.ruehsen@gmx.de>

     Don't fetch robots.txt with --no-robots and --no-follow-sitemaps
     
     * src/wget.c (queue_url_from_local): Skip fetching robots.txt.
     * tests/test-robots-off.c: New test case for --no-robots --no-follow-sitemaps.

2026-01-03 Tim Rühsen <tim.ruehsen@gmx.de>

     Implement --progress=dot
     
     * src/bar.c: Main implementation of dotted progress bar.
     * src/options.c: Handle different types for the dotted progress bar.
     * src/wget.c: Adjust calling the progress bar.
     * src/wget_bar.h: Define PROGRESS_TYPE_DOT.
     * src/wget_options.h: Extend struct config.
     * tests/test-wget-1.c: Simple testing if wget2 accepts the dot types.

2026-01-01 Dezponia Veil <3716708-Dezponia@users.noreply.gitlab.com>

     * docs/wget2.md: Remove redundant period in `--retry-on-http-error=list` section

2026-01-01 Tim Rühsen <tim.ruehsen@gmx.de>

     Add Dockerfile to build static wget2 with musl
     
     * README.md: Add description on how to build static wget2 for Linux/amd64.
     * contrib/Dockerfile.musl.static.amd64: New Dockerfile.
     * contrib/Dockerfile.win32.static: Fix docker warning.

2025-12-31 Tim Rühsen <tim.ruehsen@gmx.de>

     * contrib/Dockerfile.win32.static: Updated / fixed

2025-12-31 Tim Rühsen <tim.ruehsen@gmx.de>

     * README.md: Add chown command for wget2.exe

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * contrib/release: Fix assignment of signing_key

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     Release v2.2.1

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * gnulib: Update

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix redirect/mirror regression from 400713ca (#698)
     
     * src/wget.c (process_response_header): Delegate link handling to process_response().
     * tests/Makefile.am: Add test-link-location.c.
     * tests/test-link-location.c: New test file.

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * docs/libwget.doxy.in: Skip building graphs because too complex

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * docs/wget2.md: Fix html examples in text

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     * README.md: Fix anchor links for Gitlab

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix --server-response for HTTP/1.1 (#705)
     
     * libwget/http.c (wget_http_get_response_cb): Clone header memory.

2025-12-30 Tim Rühsen <tim.ruehsen@gmx.de>

     Fix convert-links (#709)
     
     * src/wget.c (convert_links): process URL the same way as in normalize_uri().
     * tests/Makefile.am: Add new test file test-k-percent-encoding.c.
     * tests/test-k-percent-encoding.c: New file.

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * src/wget.c: Set exit status 8 on 403

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * libwget/ssl_openssl.c (wget_ssl_set_config_int): Ignore WGET_SSL_DANE

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * .gitlab-ci.yml (Sanitizers/Debian): Fetch fuzzer corpora from git

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     tests/test-limit-rate-http2.c: Increase timeout variance for valgrind tests

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-ocsp-server.c: Silence syntax-check

2025-12-29 Tim Rühsen <tim.ruehsen@gmx.de>

     * tests/test-ocsp-server.c: Skip some tests for OpenSSL

