Skip to content

Conversation

@santigimeno
Copy link
Member

@santigimeno santigimeno commented Jan 7, 2026

Summary by CodeRabbit

  • New Features

    • Version updated to 8.18.0.
    • Improved protocol negotiation (ALPN) and expanded SSH tracing for diagnostics.
  • Bug Fixes

    • Strengthened memory handling and safer string/IO operations.
    • More explicit error reporting across DNS, async resolution, and proxy flows.
  • Improvements

    • More consistent timing/timeout behavior and connection management.
    • General code quality, API consistency, and header/formatting cleanups.

✏️ Tip: You can customize this high-level summary in your review settings.

@santigimeno santigimeno requested a review from RafaelGSS January 7, 2026 13:27
@santigimeno santigimeno self-assigned this Jan 7, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 7, 2026

Walkthrough

Libcurl updated to 8.18.0 with broad internal refactors: memory API standardized to curlx_* wrappers, many buffer and transport types tightened (uint8_t/uint16_t), time APIs changed to pointer/ms variants, multiple public APIs converted to CURLcode-based returns, Windows CE support removed, and large-scale header/include cleanup and formatting normalization.

Changes

Cohort / File(s) Summary
Version & Versioning
deps/curl/include/curl/curlver.h
Bumped libcurl version/timestamp and reformatted version macros.
Build/config files
deps/curl/lib/CMakeLists.txt, deps/curl/lib/Makefile.am, deps/curl/lib/Makefile.inc, deps/curl/curl.gyp, deps/curl/include/Makefile.in, deps/curl/include/curl/Makefile.in
Added/removed source files (curlx/strcopy.c; ratelimit.c, curl_share.c added; rename.c/share.c/speedcheck.c/mbedtls_threadlock.c removed); adjusted build/install/export logic; added curl-optiontable custom target; added SFTPD/SSHD variables.
Public headers — macros & formatting
many deps/curl/include/curl/*.h (curl.h, header.h, urlapi.h, websockets.h, options.h, etc.)
Normalized macro spacing (e.g., 1<<n1 << n) and cosmetic formatting; no semantic macro value changes.
Public headers — API signature changes
deps/curl/include/curl/multi.h, deps/curl/include/curl/curlver.h, deps/curl/include/curl/easy.h
curl_multi_fdset signature extended with exc_fd_set and int *max_fd; curlver updated; minor doc wording fixes.
Time/timing APIs
deps/curl/lib/curlx/timeval.c, deps/curl/lib/curlx/timeval.h, many callers (connect.c, cshutdn.c, cf-*, conncache.c, etc.)
Introduced pointer-based now/timediff APIs (curlx_pnow, curlx_ptimediff_ms/us), added curlx_gmtime, and switched callers to millisecond variants and Curl_pgrs_now(data).
Memory management standardization
wide set under deps/curl/lib/* (bufq, dynhds, many sources)
Replaced malloc/calloc/realloc/free/strdup with curlx_malloc/curlx_calloc/curlx_realloc/curlx_free/curlx_strdup across many modules; removed curl_memory.h file.
Buffer/byte-type tightening
deps/curl/lib/bufq.c, deps/curl/lib/bufq.h, deps/curl/lib/cf-*, curlx/base64.*, curlx/strparse.*, etc.
Converted many APIs and internal buffers from unsigned char*/char*/void* to uint8_t* and adjusted related typedefs and wrappers; base64 and hex tables renamed to curlx_* variants.
Async resolver API changes
deps/curl/lib/asyn.h, asyn-ares.c, asyn-thrdd.c, asyn-base.c
Curl_async_getaddrinfo now returns CURLcode (no waitp), callers/implementations updated; async timeouts use ms-based helpers.
Address resolution API changes
deps/curl/lib/curl_addrinfo.c, curl_addrinfo.h
Curl_str2addr/Curl_ip2addr refactored to return CURLcode, added Curl_is_ipaddr; memory allocation via curlx_*.
Socket / transport type changes
deps/curl/lib/cf-socket.c, cf-socket.h, connect.c, many cf_* modules
Transport parameter/type changed from int to uint8_t; socket/open APIs updated accordingly; filter contexts (cf) passed into helpers; consistent curlx_* usage and time API adoption.
Connection pool / shutdown changes
deps/curl/lib/conncache.c, conncache.h, cshutdn.c
Curl_cpool_upkeep takes struct Curl_easy *data; connection pool struct extended; shutdown/timeleft APIs updated to use data-driven now and ms variants.
Cookie, ALTSVC, DOH, and content-encoding APIs
deps/curl/lib/cookie.*, altsvc.*, doh.*, content_encoding.*
Multiple public APIs changed to return CURLcode (e.g., Curl_cookie_add, Curl_cookie_getlist, Curl_doh), cookie parsing/storage refactored, Curl_altsvc_lookup gains bool *psame_destination, Curl_get_content_encodings replaces older buffer API.
Filter/CF, HTTP proxy and CONNECT changes
deps/curl/lib/cfilters.*, cf-h1-proxy.c, cf-h2-proxy.c, cf-https-connect.c
Buffer types to uint8_t*, added folded-header handling in h1 proxy, ALPN preference logic in HTTPS connect, and curlx_* memory usage.
Windows & platform configuration
deps/curl/lib/config-win32.h, curl_config*.in, curlx/fopen.*
Removed many Windows CE/UNDER_CE special cases; broadened HAVE_* feature defines (HAVE_LOCALTIME_R, HAVE_FCNTL_H, etc.); added win32-specific curlx_CreateFile and win32 fopen/rename wrappers.
String/safety helpers
deps/curl/lib/curlx/strcopy.c, curlx/strcopy.h, curlx/warnless.*
Added curlx_strcopy, new warnless conversion helpers (curlx_uitouz, curlx_sztouz, etc.), renamed many curlx symbols and exposed new safety APIs.
Tracing and diagnostics
deps/curl/lib/curl_trc.c, curl_trc.h
Added SSH tracing feature (Curl_trc_feat_ssh, Curl_trc_ssh), expanded trace feature arrays, formatting changes.
Large-scale include cleanup
many headers in deps/curl/lib/*
Removed many #include <curl/curl.h>, curl_memory.h, memdebug.h from many translation units; introduced curl_trc.h, forward declarations, and targeted includes to reduce coupling.
Removed files
deps/curl/lib/curl_memory.h
File deleted; its macro redefinitions removed.
Miscellaneous
various files
Wide cosmetic changes: whitespace, comment wording (DO NOT / thread-safe), minor API format adjustments, and many localized refactors (base64, sha, NTLM, SASL, etc.).

Sequence Diagram(s)

(Skipped — changes are broad and heterogeneous; no single new multi-component flow with clear sequential interactions isolated by this diff.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • RafaelGSS

Poem

🐇
I nibble bytes and tidy rows,
Swapping frees for curlx glows.
uint8_t hops, time ticks align,
CE's ghosts gone — the code looks fine.
A little carrot for libcurl's new clothes.

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 27.84% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: updating the libcurl dependency to version 8.18.0, which aligns with the massive changeset of curl source and configuration files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Fix all issues with AI agents
In @deps/curl/include/curl/system.h:
- Around line 137-143: Remove the entire UNDER_CE conditional branch that
defines Windows CE specific macros (the #elif defined(UNDER_CE) block and its
definitions of CURL_TYPEOF_CURL_OFF_T, CURL_FORMAT_CURL_OFF_T,
CURL_FORMAT_CURL_OFF_TU, CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU, and
CURL_TYPEOF_CURL_SOCKLEN_T); delete that block so Windows CE support is not
compiled or preserved, ensuring the file follows libcurl 8.18.0’s removal of
Windows CE/CeGCC support and falls through to the appropriate platform branches
instead.

In @deps/curl/lib/curl_get_line.c:
- Line 31: The appendnl macro declares a parameter b but ignores it and always
uses buf; change the macro to use the parameter (preferred) by redefining
appendnl(b) as curlx_dyn_addn((b), "\n", 1) and update all call sites to pass
the buffer variable (e.g., buf) instead of relying on the outer-scope buf, or
alternatively remove the parameter by redefining appendnl() to use buf and
update call sites to call it with no arguments; reference symbols: appendnl,
curlx_dyn_addn, and the buffer variable (buf).

In @deps/curl/lib/curlx/fopen.c:
- Around line 439-503: The retry loop in curlx_win32_rename currently spins with
Sleep(1) up to max_wait_ms and discards MoveFileEx errors; update
curlx_win32_rename to (1) capture the failing error from MoveFileEx via
GetLastError() each iteration and map/preserve it (set errno appropriately)
before returning so callers can distinguish failure reasons, (2) back off the
retry sleep to a more sensible strategy (e.g., exponential or increasing sleeps
up to a cap rather than fixed 1ms) to avoid CPU churn and give other processes
time to close handles, and (3) stop retrying immediately for non-transient
errors by checking the GetLastError() code (only retry on errors that indicate
temporary lock/deny conditions) while returning promptly for other errors;
reference curlx_win32_rename, MoveFileEx, max_wait_ms, Sleep, GetLastError and
errno mapping when making these changes.
- Line 324: The code directly assigns errno = EINVAL in fopen-related logic
which breaks portability; replace those direct assignments with the portability
macro by calling CURL_SETERRNO(EINVAL) at each occurrence (e.g., the sites
currently using errno = EINVAL around fopen handling) so platforms without errno
support use the no-op implementation; ensure you update all four occurrences
that were flagged (the lines assigning errno) to use CURL_SETERRNO(EINVAL)
instead.

In @deps/curl/lib/doh.c:
- Around line 844-846: The preprocessor macro in the doh.c conditional is
misspelled: change the #ifdef from USE_HTTTPS to the correct macro USE_HTTPSRR
so the HTTPS RR-specific branch surrounding the if ((type != CURL_DNS_TYPE_NS)
&& !d->numcname && !d->numaddr && !d->numhttps_rrs) executes when HTTPS RR
support is compiled in; update the macro name only (no logic changes) wherever
the incorrect USE_HTTTPS appears in this conditional block so the intended
branch is compiled.

In @deps/curl/lib/doh.h:
- Around line 119-120: The disabled-DoH macro for Curl_doh is wrong: update the
macro so its parameter list matches the function signature Curl_doh(struct
Curl_easy *data, const char *hostname, int port, int ip_version) (remove the
extra fifth parameter) and change its return from NULL to an appropriate
CURLcode such as CURLE_COULDNT_RESOLVE_HOST so callers that expect a CURLcode
compile and get a proper error value when CURL_DISABLE_DOH is defined.
🧹 Nitpick comments (3)
deps/curl/lib/dynhds.c (1)

326-326: Consider more idiomatic calloc parameter order.

While functionally correct, curlx_calloc(1, sizeof(nghttp2_nv) * dynhds->hds_len) would be clearer as curlx_calloc(dynhds->hds_len, sizeof(nghttp2_nv)) to better express "allocate N elements of size S."

♻️ More idiomatic form
-  nghttp2_nv *nva = curlx_calloc(1, sizeof(nghttp2_nv) * dynhds->hds_len);
+  nghttp2_nv *nva = curlx_calloc(dynhds->hds_len, sizeof(nghttp2_nv));
deps/curl/lib/curlx/fopen.c (1)

253-294: Consider setting errno on failure for consistency.

The new curlx_CreateFile function returns INVALID_HANDLE_VALUE on failure but doesn't set errno, while other functions in this file (e.g., curlx_win32_open) do set errno. Callers might expect errno to be populated for error reporting.

Proposed enhancement
     /* !checksrc! disable BANNEDFUNC 1 */
     handle = CreateFile(target,
                         dwDesiredAccess,
                         dwShareMode,
                         lpSecurityAttributes,
                         dwCreationDisposition,
                         dwFlagsAndAttributes,
                         hTemplateFile);
+    if(handle == INVALID_HANDLE_VALUE) {
+      errno = EINVAL;
+    }
     CURLX_FREE(fixed);
deps/curl/lib/curlx/warnless.c (1)

309-317: Minor: Consider documenting the output parameter behavior on failure.

curlx_sztouz sets *puznum = 0 on failure, which is reasonable but worth noting. Callers should check the return value rather than relying on the output value.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ba6c1d0 and 1218adf.

📒 Files selected for processing (300)
  • deps/curl/curl.gyp
  • deps/curl/include/Makefile.in
  • deps/curl/include/curl/Makefile.in
  • deps/curl/include/curl/curl.h
  • deps/curl/include/curl/curlver.h
  • deps/curl/include/curl/easy.h
  • deps/curl/include/curl/header.h
  • deps/curl/include/curl/multi.h
  • deps/curl/include/curl/options.h
  • deps/curl/include/curl/system.h
  • deps/curl/include/curl/typecheck-gcc.h
  • deps/curl/include/curl/urlapi.h
  • deps/curl/include/curl/websockets.h
  • deps/curl/lib/CMakeLists.txt
  • deps/curl/lib/Makefile.am
  • deps/curl/lib/Makefile.in
  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/altsvc.c
  • deps/curl/lib/altsvc.h
  • deps/curl/lib/amigaos.c
  • deps/curl/lib/amigaos.h
  • deps/curl/lib/arpa_telnet.h
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/asyn.h
  • deps/curl/lib/bufq.c
  • deps/curl/lib/bufq.h
  • deps/curl/lib/bufref.c
  • deps/curl/lib/bufref.h
  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-h1-proxy.h
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-h2-proxy.h
  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/cf-haproxy.h
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-https-connect.h
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/cf-ip-happy.h
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/cfilters.c
  • deps/curl/lib/cfilters.h
  • deps/curl/lib/config-os400.h
  • deps/curl/lib/config-plan9.h
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/conncache.c
  • deps/curl/lib/conncache.h
  • deps/curl/lib/connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/content_encoding.c
  • deps/curl/lib/content_encoding.h
  • deps/curl/lib/cookie.c
  • deps/curl/lib/cookie.h
  • deps/curl/lib/cshutdn.c
  • deps/curl/lib/cshutdn.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_config-cmake.h.in
  • deps/curl/lib/curl_config.h.in
  • deps/curl/lib/curl_ctype.h
  • deps/curl/lib/curl_endian.c
  • deps/curl/lib/curl_fnmatch.c
  • deps/curl/lib/curl_fnmatch.h
  • deps/curl/lib/curl_fopen.c
  • deps/curl/lib/curl_fopen.h
  • deps/curl/lib/curl_get_line.c
  • deps/curl/lib/curl_get_line.h
  • deps/curl/lib/curl_gethostname.c
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_gssapi.h
  • deps/curl/lib/curl_hmac.h
  • deps/curl/lib/curl_ldap.h
  • deps/curl/lib/curl_md4.h
  • deps/curl/lib/curl_memory.h
  • deps/curl/lib/curl_memrchr.c
  • deps/curl/lib/curl_memrchr.h
  • deps/curl/lib/curl_ntlm_core.c
  • deps/curl/lib/curl_ntlm_core.h
  • deps/curl/lib/curl_range.c
  • deps/curl/lib/curl_range.h
  • deps/curl/lib/curl_rtmp.c
  • deps/curl/lib/curl_sasl.c
  • deps/curl/lib/curl_sasl.h
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_setup_once.h
  • deps/curl/lib/curl_sha256.h
  • deps/curl/lib/curl_sha512_256.c
  • deps/curl/lib/curl_sha512_256.h
  • deps/curl/lib/curl_share.c
  • deps/curl/lib/curl_share.h
  • deps/curl/lib/curl_sspi.c
  • deps/curl/lib/curl_sspi.h
  • deps/curl/lib/curl_threads.c
  • deps/curl/lib/curl_trc.c
  • deps/curl/lib/curl_trc.h
  • deps/curl/lib/curlx/base64.c
  • deps/curl/lib/curlx/base64.h
  • deps/curl/lib/curlx/binmode.h
  • deps/curl/lib/curlx/curlx.h
  • deps/curl/lib/curlx/dynbuf.c
  • deps/curl/lib/curlx/dynbuf.h
  • deps/curl/lib/curlx/fopen.c
  • deps/curl/lib/curlx/fopen.h
  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curlx/inet_pton.h
  • deps/curl/lib/curlx/multibyte.c
  • deps/curl/lib/curlx/multibyte.h
  • deps/curl/lib/curlx/nonblock.c
  • deps/curl/lib/curlx/nonblock.h
  • deps/curl/lib/curlx/snprintf.h
  • deps/curl/lib/curlx/strcopy.c
  • deps/curl/lib/curlx/strcopy.h
  • deps/curl/lib/curlx/strerr.c
  • deps/curl/lib/curlx/strparse.c
  • deps/curl/lib/curlx/strparse.h
  • deps/curl/lib/curlx/timediff.c
  • deps/curl/lib/curlx/timediff.h
  • deps/curl/lib/curlx/timeval.c
  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/version_win32.c
  • deps/curl/lib/curlx/version_win32.h
  • deps/curl/lib/curlx/wait.c
  • deps/curl/lib/curlx/wait.h
  • deps/curl/lib/curlx/warnless.c
  • deps/curl/lib/curlx/warnless.h
  • deps/curl/lib/curlx/winapi.c
  • deps/curl/lib/cw-out.c
  • deps/curl/lib/cw-out.h
  • deps/curl/lib/cw-pause.c
  • deps/curl/lib/cw-pause.h
  • deps/curl/lib/dict.c
  • deps/curl/lib/dict.h
  • deps/curl/lib/dllmain.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/doh.h
  • deps/curl/lib/dynhds.c
  • deps/curl/lib/dynhds.h
  • deps/curl/lib/easy.c
  • deps/curl/lib/easy_lock.h
  • deps/curl/lib/easygetopt.c
  • deps/curl/lib/easyif.h
  • deps/curl/lib/easyoptions.c
  • deps/curl/lib/easyoptions.h
  • deps/curl/lib/escape.c
  • deps/curl/lib/escape.h
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/fake_addrinfo.h
  • deps/curl/lib/file.c
  • deps/curl/lib/file.h
  • deps/curl/lib/fileinfo.c
  • deps/curl/lib/fileinfo.h
  • deps/curl/lib/formdata.c
  • deps/curl/lib/formdata.h
  • deps/curl/lib/ftp.c
  • deps/curl/lib/ftp.h
  • deps/curl/lib/ftplistparser.c
  • deps/curl/lib/ftplistparser.h
  • deps/curl/lib/functypes.h
  • deps/curl/lib/getenv.c
  • deps/curl/lib/getinfo.c
  • deps/curl/lib/getinfo.h
  • deps/curl/lib/gopher.c
  • deps/curl/lib/gopher.h
  • deps/curl/lib/hash.c
  • deps/curl/lib/hash.h
  • deps/curl/lib/headers.c
  • deps/curl/lib/headers.h
  • deps/curl/lib/hmac.c
  • deps/curl/lib/hostip.c
  • deps/curl/lib/hostip.h
  • deps/curl/lib/hostip4.c
  • deps/curl/lib/hostip6.c
  • deps/curl/lib/hsts.c
  • deps/curl/lib/hsts.h
  • deps/curl/lib/http.c
  • deps/curl/lib/http.h
  • deps/curl/lib/http1.c
  • deps/curl/lib/http1.h
  • deps/curl/lib/http2.c
  • deps/curl/lib/http2.h
  • deps/curl/lib/http_aws_sigv4.c
  • deps/curl/lib/http_aws_sigv4.h
  • deps/curl/lib/http_chunks.c
  • deps/curl/lib/http_chunks.h
  • deps/curl/lib/http_digest.c
  • deps/curl/lib/http_negotiate.c
  • deps/curl/lib/http_negotiate.h
  • deps/curl/lib/http_ntlm.c
  • deps/curl/lib/http_ntlm.h
  • deps/curl/lib/http_proxy.c
  • deps/curl/lib/http_proxy.h
  • deps/curl/lib/httpsrr.c
  • deps/curl/lib/httpsrr.h
  • deps/curl/lib/idn.c
  • deps/curl/lib/idn.h
  • deps/curl/lib/if2ip.c
  • deps/curl/lib/if2ip.h
  • deps/curl/lib/imap.c
  • deps/curl/lib/imap.h
  • deps/curl/lib/ldap.c
  • deps/curl/lib/llist.c
  • deps/curl/lib/llist.h
  • deps/curl/lib/macos.c
  • deps/curl/lib/macos.h
  • deps/curl/lib/md4.c
  • deps/curl/lib/md5.c
  • deps/curl/lib/memdebug.c
  • deps/curl/lib/memdebug.h
  • deps/curl/lib/mime.c
  • deps/curl/lib/mime.h
  • deps/curl/lib/mprintf.c
  • deps/curl/lib/mqtt.c
  • deps/curl/lib/mqtt.h
  • deps/curl/lib/multi.c
  • deps/curl/lib/multi_ev.c
  • deps/curl/lib/multi_ev.h
  • deps/curl/lib/multi_ntfy.c
  • deps/curl/lib/multi_ntfy.h
  • deps/curl/lib/multihandle.h
  • deps/curl/lib/multiif.h
  • deps/curl/lib/netrc.c
  • deps/curl/lib/netrc.h
  • deps/curl/lib/noproxy.c
  • deps/curl/lib/openldap.c
  • deps/curl/lib/optiontable.pl
  • deps/curl/lib/parsedate.c
  • deps/curl/lib/parsedate.h
  • deps/curl/lib/pingpong.c
  • deps/curl/lib/pingpong.h
  • deps/curl/lib/pop3.c
  • deps/curl/lib/pop3.h
  • deps/curl/lib/progress.c
  • deps/curl/lib/progress.h
  • deps/curl/lib/psl.c
  • deps/curl/lib/psl.h
  • deps/curl/lib/rand.c
  • deps/curl/lib/rand.h
  • deps/curl/lib/ratelimit.c
  • deps/curl/lib/ratelimit.h
  • deps/curl/lib/rename.c
  • deps/curl/lib/rename.h
  • deps/curl/lib/request.c
  • deps/curl/lib/request.h
  • deps/curl/lib/rtsp.c
  • deps/curl/lib/rtsp.h
  • deps/curl/lib/select.c
  • deps/curl/lib/select.h
  • deps/curl/lib/sendf.c
  • deps/curl/lib/sendf.h
  • deps/curl/lib/setopt.c
  • deps/curl/lib/setopt.h
  • deps/curl/lib/setup-os400.h
  • deps/curl/lib/setup-vms.h
  • deps/curl/lib/sha256.c
  • deps/curl/lib/sigpipe.h
  • deps/curl/lib/slist.c
  • deps/curl/lib/slist.h
  • deps/curl/lib/smb.c
  • deps/curl/lib/smb.h
  • deps/curl/lib/smtp.c
  • deps/curl/lib/smtp.h
  • deps/curl/lib/sockaddr.h
  • deps/curl/lib/socketpair.c
  • deps/curl/lib/socketpair.h
  • deps/curl/lib/socks.c
  • deps/curl/lib/socks.h
  • deps/curl/lib/socks_gssapi.c
  • deps/curl/lib/socks_sspi.c
  • deps/curl/lib/speedcheck.c
  • deps/curl/lib/splay.c
  • deps/curl/lib/splay.h
  • deps/curl/lib/strcase.c
  • deps/curl/lib/strcase.h
  • deps/curl/lib/strdup.c
  • deps/curl/lib/strdup.h
  • deps/curl/lib/strequal.c
  • deps/curl/lib/strerror.c
  • deps/curl/lib/strerror.h
  • deps/curl/lib/system_win32.c
  • deps/curl/lib/system_win32.h
  • deps/curl/lib/telnet.c
  • deps/curl/lib/tftp.c
  • deps/curl/lib/transfer.c
  • deps/curl/lib/transfer.h
  • deps/curl/lib/uint-bset.c
  • deps/curl/lib/uint-bset.h
  • deps/curl/lib/uint-hash.c
  • deps/curl/lib/uint-hash.h
  • deps/curl/lib/uint-spbset.c
  • deps/curl/lib/uint-spbset.h
  • deps/curl/lib/uint-table.c
  • deps/curl/lib/uint-table.h
  • deps/curl/lib/url.c
  • deps/curl/lib/url.h
  • deps/curl/lib/urlapi.c
  • deps/curl/lib/urldata.h
💤 Files with no reviewable changes (22)
  • deps/curl/lib/curl_fnmatch.h
  • deps/curl/lib/curlx/version_win32.h
  • deps/curl/lib/curl_endian.c
  • deps/curl/lib/file.h
  • deps/curl/lib/cf-https-connect.h
  • deps/curl/lib/curl_sasl.h
  • deps/curl/lib/dynhds.h
  • deps/curl/lib/curlx/nonblock.h
  • deps/curl/lib/curl_memory.h
  • deps/curl/lib/curl_fopen.h
  • deps/curl/lib/cf-h2-proxy.h
  • deps/curl/lib/dict.h
  • deps/curl/lib/easyif.h
  • deps/curl/lib/curl_get_line.h
  • deps/curl/lib/cf-h1-proxy.h
  • deps/curl/lib/curlx/timediff.h
  • deps/curl/lib/curlx/wait.h
  • deps/curl/lib/curl_md4.h
  • deps/curl/lib/cshutdn.h
  • deps/curl/lib/escape.h
  • deps/curl/lib/curl_hmac.h
  • deps/curl/lib/curl_sspi.h
🧰 Additional context used
🧠 Learnings (70)
📚 Learning: 2025-12-03T14:35:32.707Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:32.707Z
Learning: Applies to deps/grpc/src/core/util/**/*.{cc,h,cpp} : Use string manipulation functions from `string.h` and `string.cc`

Applied to files:

  • deps/curl/lib/curl_gethostname.c
  • deps/curl/lib/curlx/strcopy.c
  • deps/curl/lib/curlx/strparse.c
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_memrchr.h
  • deps/curl/lib/curlx/strerr.c
📚 Learning: 2025-12-03T14:35:32.707Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:32.707Z
Learning: Applies to deps/grpc/src/core/util/**/*.{cc,h,cpp} : Use time-related functions from `time.h` and `time.cc`

Applied to files:

  • deps/curl/lib/config-os400.h
  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/timeval.c
  • deps/curl/lib/curlx/timediff.c
📚 Learning: 2025-12-03T14:35:34.369Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:34.369Z
Learning: Applies to deps/grpc/src/core/util/src/**/string.{h,cc} : String manipulation functions should be implemented in `string.h` and `string.cc`

Applied to files:

  • deps/curl/lib/curlx/strcopy.c
  • deps/curl/lib/curl_memrchr.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace_flags.yaml : Add new trace flags as entries in the `trace_flags.yaml` file with the flag name and a brief description of what it does

Applied to files:

  • deps/curl/lib/curl_trc.h
  • deps/curl/lib/curl_trc.c
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_DLOG(tracer, level)` macro to log trace messages in debug builds when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:34:55.521Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/telemetry/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:55.521Z
Learning: Applies to deps/grpc/src/core/telemetry/**/telemetry/tcp_tracer.{h,cc} : Use the `TcpTracer` class to trace TCP-level events in tcp_tracer.h / tcp_tracer.cc

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use the `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use the `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:34:02.613Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:02.613Z
Learning: Applies to deps/grpc/src/core/resolver/dns/**/*.{h,cc} : Use DNS for name resolution when implementing the DNS resolver plugin

Applied to files:

  • deps/curl/include/curl/curl.h
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/doh.h
  • deps/curl/lib/doh.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Provide a platform-independent way to work with network addresses in utility functions

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:31:59.979Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:59.979Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/*sockaddr_utils.{h,cc} : Work with `sockaddr` structures using functions from `sockaddr_utils.h`/`sockaddr_utils.cc`, including converting to/from string representations and comparing for equality

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/connect.c
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/cf-socket.c
📚 Learning: 2025-12-03T14:31:54.774Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:54.774Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/sockaddr_utils.{h,cc} : Use `sockaddr_utils.h` / `sockaddr_utils.cc` for working with `sockaddr` structures, including converting them to/from string representations and comparing them for equality

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/connect.c
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/cf-socket.c
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/*address*.{h,cc} : Design address utility functions to be efficient and avoid common pitfalls when working with network addresses

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/curlx/warnless.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/cf-socket.c
📚 Learning: 2025-12-03T14:29:08.569Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:08.569Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/{alts_credentials.h,alts_credentials.cc} : Implement credentials for ALTS transport security in `alts_credentials.h` / `alts_credentials.cc`

Applied to files:

  • deps/curl/lib/altsvc.h
  • deps/curl/lib/altsvc.c
📚 Learning: 2025-12-03T14:29:05.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:05.695Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/alts_credentials.{h,cc} : Use ALTS (Application Layer Transport Security) credentials to configure ALTS security for the transport

Applied to files:

  • deps/curl/lib/altsvc.h
  • deps/curl/lib/altsvc.c
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/{sockaddr_utils.h,sockaddr_utils.cc} : Use `sockaddr_utils.h` and `sockaddr_utils.cc` for working with `sockaddr` structures, including converting them to and from string representations, and comparing them for equality

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/connect.c
📚 Learning: 2025-12-03T14:34:02.613Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:02.613Z
Learning: Applies to deps/grpc/src/core/resolver/sockaddr/**/*.{h,cc} : Use socket address lists for name resolution when implementing the sockaddr resolver plugin

Applied to files:

  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:30:51.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chaotic_good/GEMINI.md:0-0
Timestamp: 2025-12-03T14:30:51.421Z
Learning: Applies to deps/grpc/src/core/ext/transport/chaotic_good/**/chaotic_good/client_transport.{h,cc} : Implement client-side transport logic in `client_transport.h` and `client_transport.cc`

Applied to files:

  • deps/curl/lib/cf-ip-happy.h
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/hpack_{encoder,parser}.{h,cc} : Implement HPACK (header compression algorithm as per RFC 7541) in the CHTTP2 transport to compress headers of gRPC requests and responses

Applied to files:

  • deps/curl/lib/cf-ip-happy.h
  • deps/curl/lib/cf-haproxy.h
  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/content_encoding.c
  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:35:35.065Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:35.065Z
Learning: Applies to deps/grpc/src/core/util/src/core/util/time.{h,cc} : Time-related functions should be implemented in dedicated header and implementation files (time.h / time.cc)

Applied to files:

  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/timeval.c
  • deps/curl/lib/curlx/timediff.c
📚 Learning: 2025-12-03T14:35:34.369Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:34.369Z
Learning: Applies to deps/grpc/src/core/util/src/**/time.{h,cc} : Time-related functions should be implemented in `time.h` and `time.cc`

Applied to files:

  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/timeval.c
  • deps/curl/lib/curlx/timediff.c
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/c_ares/**/*.{c,cc,cpp,h,hpp} : Use c-ares library for DNS resolution implementations in the c_ares subdirectory

Applied to files:

  • deps/curl/curl.gyp
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/curl_config.h.in
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/fake_addrinfo.h
  • deps/curl/lib/asyn.h
📚 Learning: 2025-12-03T14:35:21.897Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/tsi/ssl/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:21.897Z
Learning: Applies to deps/grpc/src/core/tsi/ssl/**/*.{c,cc,cpp,h,hpp} : Keep OpenSSL up-to-date to ensure that gRPC applications are secure

Applied to files:

  • deps/curl/curl.gyp
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_sha512_256.c
  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/connect.c
  • deps/curl/lib/curl_ntlm_core.c
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/security/**/*.{h,cc} : Implement security handshakers responsible for performing TLS and ALTS handshakes in the security/ subdirectory

Applied to files:

  • deps/curl/curl.gyp
  • deps/curl/lib/Makefile.inc
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/transport/hpack_{encoder,parser}.{h,cc} : Implement HPACK (header compression algorithm) according to RFC 7541 for compressing gRPC request and response headers in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/content_encoding.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:41.247Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:41.247Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : The HTTP CONNECT handshaker implementation should be in `http_connect_handshaker.cc` for establishing connections to target servers through HTTP proxies

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/*.{h,cc} : Implement the HTTP CONNECT handshaker in the http_connect/ subdirectory

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/connect.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.{h,cc} : Implement client-side connector logic in CHTTP2 to create and establish new HTTP/2 transport connections

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/connect.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/chttp2_transport.{h,cc} : Support HTTP/2 stream multiplexing over a single TCP connection for high performance and low latency in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/curl_setup.h
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: The HTTP CONNECT handshaker is responsible for establishing connections to target servers through HTTP proxies supporting the CONNECT method

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : HTTP CONNECT handshaker implementation should be contained in `http_connect_handshaker.cc`

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:31:36.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:36.421Z
Learning: HTTP CONNECT handshaker should be used in conjunction with security handshakers, such as the TLS handshaker, to establish secure connections to target servers

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: HTTP CONNECT handshaker should be used in conjunction with security handshakers (such as TLS handshaker) to establish secure connections to target servers

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/alpn/**/*.{h,cc} : Implement ALPN (Application-Layer Protocol Negotiation) for selecting the HTTP/2 protocol during the TLS handshake

Applied to files:

  • deps/curl/lib/altsvc.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/connect.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/alpn/**/*.{h,cc} : Implement ALPN (Application-Layer Protocol Negotiation) to select the HTTP/2 protocol during the TLS handshake

Applied to files:

  • deps/curl/lib/altsvc.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/connect.c
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/native/**/*.{c,cc,cpp,h,hpp} : Use native operating system DNS resolver for DNS resolution implementations in the native subdirectory

Applied to files:

  • deps/curl/lib/doh.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:32:52.516Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/iomgr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:52.516Z
Learning: Use `grpc_pollset` abstraction to efficiently monitor file descriptors for I/O events across multiple file descriptors

Applied to files:

  • deps/curl/lib/cshutdn.c
  • deps/curl/include/curl/multi.h
📚 Learning: 2025-12-03T14:34:02.613Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:02.613Z
Learning: Applies to deps/grpc/src/core/resolver/fake/**/*.{h,cc} : Implement fake/mock resolvers in the `fake/` subdirectory for testing purposes

Applied to files:

  • deps/curl/lib/fake_addrinfo.c
📚 Learning: 2025-12-03T14:35:34.369Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:34.369Z
Learning: Applies to deps/grpc/src/core/util/src/**/host_port.{h,cc} : Host and port string manipulation utilities should be implemented in `host_port.h` and `host_port.cc`

Applied to files:

  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:35:35.065Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:35.065Z
Learning: Applies to deps/grpc/src/core/util/src/core/util/host_port.{h,cc} : Host and port utility functions should be implemented in dedicated header and implementation files (host_port.h / host_port.cc)

Applied to files:

  • deps/curl/lib/cf-socket.h
📚 Learning: 2025-12-03T14:31:36.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:36.421Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : HTTP CONNECT handshaker implementation should be placed in `http_connect_handshaker.cc`

Applied to files:

  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.{h,cc} : Implement the `Http2Transport` class as the main transport class for CHTTP2, managing HTTP/2 connections, stream multiplexing, and coordination of flow control and header compression

Applied to files:

  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/client/chttp2_connector.{h,cc} : Implement the client-side connector responsible for creating new CHTTP2 transport instances

Applied to files:

  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:34:28.190Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/sockaddr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:28.190Z
Learning: Applies to deps/grpc/src/core/resolver/sockaddr/**/sockaddr_resolver.{h,cc} : Implement the `Resolver` interface for name resolution in sockaddr_resolver.h / sockaddr_resolver.cc

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:34:21.252Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/sockaddr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:21.252Z
Learning: Use sockaddr resolver implementation for name resolution from a list of socket addresses

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:33:59.671Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:33:59.671Z
Learning: Choose the appropriate DNS resolver implementation (c-ares, EventEngine, or native OS resolver) based on your application's performance requirements

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/fake_addrinfo.h
  • deps/curl/lib/asyn.h
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/event_engine/**/*.{c,cc,cpp,h,hpp} : Use EventEngine for DNS resolution implementations in the event_engine subdirectory

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:32:10.553Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/channel/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:10.553Z
Learning: Applies to deps/grpc/src/core/lib/channel/**/{promise_based_filter,connected_channel}.{h,cc} : When implementing new channel filters or transport-based channels, prefer promise-based implementations over legacy callback-based implementations as part of the migration to the new promise-based architecture.

Applied to files:

  • deps/curl/lib/cfilters.c
  • deps/curl/lib/cfilters.h
  • deps/curl/lib/cf-socket.c
📚 Learning: 2025-12-03T14:29:25.191Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/filters/channel_idle/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:25.191Z
Learning: Applies to deps/grpc/src/core/ext/filters/channel_idle/**/*channel*filter*.{h,cc} : Use the 'legacy' prefix in class names to indicate that filters are based on the older channel filter API and will likely be replaced by a more modern implementation in the future

Applied to files:

  • deps/curl/lib/cfilters.c
📚 Learning: 2025-12-03T14:28:57.122Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/call/GEMINI.md:0-0
Timestamp: 2025-12-03T14:28:57.122Z
Learning: Applies to deps/grpc/src/core/credentials/call/**/call_creds_util.{h,cc} : Use utility functions from `call_creds_util.h` / `call_creds_util.cc` for working with call credentials

Applied to files:

  • deps/curl/lib/curl_gssapi.c
📚 Learning: 2025-12-03T14:35:35.065Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:35.065Z
Learning: Applies to deps/grpc/src/core/util/src/core/util/string.{h,cc} : String manipulation functions should be implemented in dedicated header and implementation files (string.h / string.cc)

Applied to files:

  • deps/curl/lib/curl_memrchr.h
📚 Learning: 2025-12-03T14:29:08.569Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:08.569Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/{tls_credentials.h,tls_credentials.cc} : Implement credentials for TLS transport security in `tls_credentials.h` / `tls_credentials.cc`

Applied to files:

  • deps/curl/lib/Makefile.inc
📚 Learning: 2025-12-03T14:29:05.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:05.695Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/tls_credentials.{h,cc} : Use TLS (Transport Layer Security) credentials to configure TLS security for the Chttp2 transport

Applied to files:

  • deps/curl/lib/Makefile.inc
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/{chttp2_transport,frame}.{h,cc} : Implement logic for parsing and serializing HTTP/2 frames in the CHTTP2 transport core

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/transport/frame.{h,cc} : Support HTTP/2 frame parsing and serialization with proper handling of all frame types in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Support all features of HTTP/2, including multiplexing, flow control, and header compression, in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.{h,cc} : Implement both stream-level and connection-level flow control in the CHTTP2 transport to prevent memory overuse and ensure fair bandwidth distribution

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:09.942Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:09.942Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/server/chttp2_server.{h,cc} : Implement server-side listener logic in CHTTP2 to accept incoming connections and create new HTTP/2 transport instances for each connection

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/flow_control.{h,cc} : Implement both stream-level and connection-level flow control in the CHTTP2 transport to prevent overconsumption of memory and ensure fair bandwidth distribution

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/frame.{h,cc} : Implement C++ classes to represent different types of HTTP/2 frames in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:30:54.187Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chaotic_good_legacy/GEMINI.md:0-0
Timestamp: 2025-12-03T14:30:54.187Z
Learning: Applies to deps/grpc/src/core/ext/transport/chaotic_good_legacy/**/chaotic_good_legacy/{chaotic_good_transport,client_transport,server_transport,frame,frame_header}.{h,cc} : Legacy Chaotic Good transport files should be maintained but marked as obsolete; new functionality should be added to the new `chaotic_good` directory implementation instead

Applied to files:

  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:30:46.740Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chaotic_good/GEMINI.md:0-0
Timestamp: 2025-12-03T14:30:46.740Z
Learning: Applies to deps/grpc/src/core/ext/transport/chaotic_good/**/chaotic_good/client_transport.{h,cc} : Implement client-side transport in `client_transport.h` and `client_transport.cc` using the ChaoticGoodClientTransport class

Applied to files:

  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/tcp_connect/**/*.{h,cc} : Implement a basic handshaker for TCP connections in the tcp_connect/ subdirectory

Applied to files:

  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/cf-socket.c
🪛 Cppcheck (2.19.0)
deps/curl/lib/curlx/inet_ntop.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/easyoptions.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/curl_fopen.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/amigaos.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/cf-h1-proxy.c

[error] 390-390: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

deps/curl/lib/curlx/warnless.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/curlx/timeval.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/cookie.c

[error] 1436-1436: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

deps/curl/lib/conncache.c

[error] 375-375: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: build-tarball
  • GitHub Check: test-linux (ubuntu-24.04-arm)
  • GitHub Check: test-linux (ubuntu-24.04)
  • GitHub Check: test-macOS
  • GitHub Check: lint-js-and-md

Comment on lines 137 to +143
#elif defined(UNDER_CE)
# ifdef __MINGW32CE__
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
# else
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# define CURL_TYPEOF_CURL_SOCKLEN_T int
# endif
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# define CURL_TYPEOF_CURL_SOCKLEN_T int
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

libcurl 8.18.0 release notes changelog breaking changes

💡 Result:

Key breaking changes in libcurl / curl 8.18.0 (from the release notes / changelog):

  • Drop support for Microsoft Visual Studio 2008 (Windows). [1]
  • Drop Windows CE / CeGCC support. [1]
  • Drop support for GnuTLS versions older than 3.6.5 (minimum now 3.6.5). [1]
  • OpenSSL minimum bumped to 3.0.0 (older OpenSSL releases are no longer supported). [1][2]

(These are the dependency/platform removals in the official release notes; other changes in the release are feature additions and security fixes.)

Sources: [1] Daniel Stenberg — curl 8.18.0 release post; [2] curl versions/changelog pages.


🌐 Web query:

libcurl 8.18.0 security advisories vulnerabilities CVE

💡 Result:

libcurl 8.18.0 — published security fixes (CVE list)

libcurl 8.18.0 includes fixes for six CVEs:

Source: curl 8.18.0 release announcement (vulnerability summary). [1] Additional curl CVE/vulnerabilities index. [2]

References
[1] curl 8.18.0 release announcement (security section).
[2] curl — Vulnerability table / CVE index.


Remove Windows CE (UNDER_CE) support entirely per libcurl 8.18.0 breaking changes.

libcurl 8.18.0 drops Windows CE / CeGCC support, a breaking change documented in the official release. The UNDER_CE branch (lines 137-143) should be removed entirely, not preserved or unified with other platforms. The current code preserves Windows CE type definitions contradicting the 8.18.0 requirement to eliminate this legacy platform support.

🤖 Prompt for AI Agents
In @deps/curl/include/curl/system.h around lines 137 - 143, Remove the entire
UNDER_CE conditional branch that defines Windows CE specific macros (the #elif
defined(UNDER_CE) block and its definitions of CURL_TYPEOF_CURL_OFF_T,
CURL_FORMAT_CURL_OFF_T, CURL_FORMAT_CURL_OFF_TU, CURL_SUFFIX_CURL_OFF_T,
CURL_SUFFIX_CURL_OFF_TU, and CURL_TYPEOF_CURL_SOCKLEN_T); delete that block so
Windows CE support is not compiled or preserved, ensuring the file follows
libcurl 8.18.0’s removal of Windows CE/CeGCC support and falls through to the
appropriate platform branches instead.


#define appendnl(b) \
curlx_dyn_addn(buf, "\n", 1)
#define appendnl(b) curlx_dyn_addn(buf, "\n", 1)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix unused macro parameter.

The appendnl macro declares a parameter (b) but ignores it, always using buf from the enclosing scope instead. This is misleading and could cause confusion.

♻️ Proposed fix

Option 1 (preferred): Use the parameter

-#define appendnl(b)  curlx_dyn_addn(buf, "\n", 1)
+#define appendnl(b)  curlx_dyn_addn((b), "\n", 1)

Option 2: Remove the unused parameter

-#define appendnl(b)  curlx_dyn_addn(buf, "\n", 1)
+#define appendnl()  curlx_dyn_addn(buf, "\n", 1)

And update the call site at line 63:

-    return appendnl(buf);
+    return appendnl();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#define appendnl(b) curlx_dyn_addn(buf, "\n", 1)
#define appendnl(b) curlx_dyn_addn((b), "\n", 1)
🤖 Prompt for AI Agents
In @deps/curl/lib/curl_get_line.c at line 31, The appendnl macro declares a
parameter b but ignores it and always uses buf; change the macro to use the
parameter (preferred) by redefining appendnl(b) as curlx_dyn_addn((b), "\n", 1)
and update all call sites to pass the buffer variable (e.g., buf) instead of
relying on the outer-scope buf, or alternatively remove the parameter by
redefining appendnl() to use buf and update call sites to call it with no
arguments; reference symbols: appendnl, curlx_dyn_addn, and the buffer variable
(buf).

else
/* !checksrc! disable ERRNOVAR 1 */
CURL_SETERRNO(EINVAL);
errno = EINVAL;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Search for CURL_SETERRNO definition
echo "=== CURL_SETERRNO macro definition ==="
rg -n -A5 '#define\s+CURL_SETERRNO' --type=c

echo ""
echo "=== Search for CURL_SETERRNO usage ==="
rg -n 'CURL_SETERRNO' --type=c

echo ""
echo "=== Other errno assignments in curlx ==="
rg -n 'errno\s*=' deps/curl/lib/curlx/ --type=c

echo ""
echo "=== Check for errno usage in other curl lib files ==="
rg -n 'errno\s*=' deps/curl/lib/*.c --type=c | head -20

Repository: nodesource/nsolid

Length of output: 178


🌐 Web query:

CURL_SETERRNO macro curl library errno handling

💡 Result:

CURL_SETERRNO is a portability macro in libcurl (defined in curl_setup.h) that sets the C errno on platforms that have it and becomes a no-op on platforms that don’t (e.g. Windows CE). In upstream source it’s defined roughly as:

  • on normal platforms: #define CURL_SETERRNO(x) (errno = (x))
  • on UNDER_CE: #define CURL_SETERRNO(x) ((void)(x))

libcurl code uses CURL_SETERRNO(...) when it needs to record a local errno value portably (for example in Win32 wrappers or UTF-16 file API fallbacks). See the macro definition and examples in the curl source. [1][2]

Sources:

  • curl_setup.h (macro definition). [1]
  • Example usage in curlx code (curlx/multibyte.c). [2]

Revert errno assignments to use CURL_SETERRNO macro for platform portability.

The direct errno = EINVAL assignments (lines 324, 355, 393, 426) bypass the CURL_SETERRNO portability macro, which is required for cross-platform compatibility. CURL_SETERRNO is conditionally compiled to handle platforms that don't support errno (e.g., Windows CE) by becoming a no-op. Direct assignments will cause issues on those platforms. Use CURL_SETERRNO(EINVAL) instead to maintain the library's existing portability guarantees.

🤖 Prompt for AI Agents
In @deps/curl/lib/curlx/fopen.c at line 324, The code directly assigns errno =
EINVAL in fopen-related logic which breaks portability; replace those direct
assignments with the portability macro by calling CURL_SETERRNO(EINVAL) at each
occurrence (e.g., the sites currently using errno = EINVAL around fopen
handling) so platforms without errno support use the no-op implementation;
ensure you update all four occurrences that were flagged (the lines assigning
errno) to use CURL_SETERRNO(EINVAL) instead.

Comment on lines +439 to +503
#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_COOKIES) || \
!defined(CURL_DISABLE_ALTSVC)
/* rename() on Windows does not overwrite, so we cannot use it here.
MoveFileEx() will overwrite and is usually atomic, however it fails
when there are open handles to the file. */
int curlx_win32_rename(const char *oldpath, const char *newpath)
{
int res = -1; /* fail */

#ifdef UNICODE
TCHAR *tchar_oldpath = curlx_convert_UTF8_to_wchar(oldpath);
TCHAR *tchar_newpath = curlx_convert_UTF8_to_wchar(newpath);
#else
const TCHAR *tchar_oldpath = oldpath;
const TCHAR *tchar_newpath = newpath;
#endif

if(tchar_oldpath && tchar_newpath) {
const int max_wait_ms = 1000;
struct curltime start;

TCHAR *oldpath_fixed = NULL;
TCHAR *newpath_fixed = NULL;
const TCHAR *target_oldpath;
const TCHAR *target_newpath;

if(fix_excessive_path(tchar_oldpath, &oldpath_fixed))
target_oldpath = oldpath_fixed;
else
target_oldpath = tchar_oldpath;

if(fix_excessive_path(tchar_newpath, &newpath_fixed))
target_newpath = newpath_fixed;
else
target_newpath = tchar_newpath;

start = curlx_now();

for(;;) {
timediff_t diff;
/* !checksrc! disable BANNEDFUNC 1 */
if(MoveFileEx(target_oldpath, target_newpath,
MOVEFILE_REPLACE_EXISTING)) {
res = 0; /* success */
break;
}
diff = curlx_timediff_ms(curlx_now(), start);
if(diff < 0 || diff > max_wait_ms) {
break;
}
Sleep(1);
}

CURLX_FREE(oldpath_fixed);
CURLX_FREE(newpath_fixed);
}

#ifdef UNICODE
curlx_free(tchar_oldpath);
curlx_free(tchar_newpath);
#endif

return res;
}
#endif
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Review the retry logic in the rename operation.

The new curlx_win32_rename function implements retry logic for MoveFileEx, which can fail when the file has open handles. Several aspects need consideration:

  1. Retry effectiveness: The 1ms sleep between retries may not provide sufficient time for other processes to close file handles. The comment acknowledges MoveFileEx fails with open handles, but retrying after 1ms doesn't guarantee those handles will be released.

  2. Error reporting: The function doesn't preserve the original error from MoveFileEx (e.g., via GetLastError()errno), making it difficult for callers to distinguish between different failure modes.

  3. Tight retry loop: With Sleep(1) and up to 1000 attempts, this could consume CPU unnecessarily if the failure is not transient.

Suggested improvements
 int curlx_win32_rename(const char *oldpath, const char *newpath)
 {
   int res = -1; /* fail */
+  DWORD last_error = 0;
 
   /* ... conversion code ... */
 
     for(;;) {
       timediff_t diff;
       /* !checksrc! disable BANNEDFUNC 1 */
       if(MoveFileEx(target_oldpath, target_newpath,
                     MOVEFILE_REPLACE_EXISTING)) {
         res = 0; /* success */
         break;
       }
+      last_error = GetLastError();
       diff = curlx_timediff_ms(curlx_now(), start);
       if(diff < 0 || diff > max_wait_ms) {
         break;
       }
-      Sleep(1);
+      Sleep(10); /* Give more time for handles to be released */
     }
+
+    /* Set errno based on the last Windows error */
+    if(res != 0 && last_error != 0) {
+      /* Map common errors, fall back to EACCES */
+      errno = (last_error == ERROR_ACCESS_DENIED) ? EACCES :
+              (last_error == ERROR_FILE_NOT_FOUND) ? ENOENT : EIO;
+    }
🤖 Prompt for AI Agents
In @deps/curl/lib/curlx/fopen.c around lines 439 - 503, The retry loop in
curlx_win32_rename currently spins with Sleep(1) up to max_wait_ms and discards
MoveFileEx errors; update curlx_win32_rename to (1) capture the failing error
from MoveFileEx via GetLastError() each iteration and map/preserve it (set errno
appropriately) before returning so callers can distinguish failure reasons, (2)
back off the retry sleep to a more sensible strategy (e.g., exponential or
increasing sleeps up to a cap rather than fixed 1ms) to avoid CPU churn and give
other processes time to close handles, and (3) stop retrying immediately for
non-transient errors by checking the GetLastError() code (only retry on errors
that indicate temporary lock/deny conditions) while returning promptly for other
errors; reference curlx_win32_rename, MoveFileEx, max_wait_ms, Sleep,
GetLastError and errno mapping when making these changes.

Comment on lines 844 to +846
#ifdef USE_HTTTPS
if((type != CURL_DNS_TYPE_NS) && !d->numcname && !d->numaddr &&
!d->numhttps_rrs)
!d->numhttps_rrs)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for both preprocessor directives
rg -n "USE_HTTTPS" --type c
rg -n "USE_HTTPSRR" --type c

Repository: nodesource/nsolid

Length of output: 2609


🏁 Script executed:

# Also check the full context around line 844 in doh.c
sed -n '840,850p' deps/curl/lib/doh.c

Repository: nodesource/nsolid

Length of output: 349


Fix typo in preprocessor directive on line 844.

#ifdef USE_HTTTPS should be #ifdef USE_HTTPSRR. The typo causes the conditional block to never execute as intended—when USE_HTTPSRR is defined, the preprocessor will skip the intended ifdef block and use the else branch instead, breaking the HTTPS RR logic.

🤖 Prompt for AI Agents
In @deps/curl/lib/doh.c around lines 844 - 846, The preprocessor macro in the
doh.c conditional is misspelled: change the #ifdef from USE_HTTTPS to the
correct macro USE_HTTPSRR so the HTTPS RR-specific branch surrounding the if
((type != CURL_DNS_TYPE_NS) && !d->numcname && !d->numaddr && !d->numhttps_rrs)
executes when HTTPS RR support is compiled in; update the macro name only (no
logic changes) wherever the incorrect USE_HTTTPS appears in this conditional
block so the intended branch is compiled.

Comment on lines +119 to +120
CURLcode Curl_doh(struct Curl_easy *data, const char *hostname,
int port, int ip_version);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n deps/curl/lib/doh.h | sed -n '115,190p'

Repository: nodesource/nsolid

Length of output: 178


🌐 Web query:

curl doh.h Curl_doh function signature macro CURL_DISABLE_DOH

💡 Result:

Do you mean (A) the exact function declaration of Curl_doh in curl's doh.h for a specific curl version, or (B) what the CURL_DISABLE_DOH macro does and how it affects that function? If (A), please tell me which curl/libcurl version or commit you need and I’ll fetch the exact signature.


🌐 Web query:

site:github.com curl/curl doh.h Curl_doh 8.18.0

💡 Result:

I searched GitHub for doh.h / Curl_doh in the curl/curl repo and related results but did not find a doh.h file or a Curl_doh symbol in the curl/curl repository at the 8.18.0 area. Relevant hits:

  • curl/doh (stand‑alone DoH client repository). [1]
  • curl/curl issue and patch snippets referencing Curl_doh / doh.h in context (patch/gist). [2]
  • curl/curl releases listing (no explicit doh.h in 8.17/8.18 tags shown). [3]

If you want, I can:

  • search a specific curl tag (curl-8_18_0) tree for doh.h, or
  • fetch the full curl/curl source at tag 8.18.0 and search it for Curl_doh/doh.h. Which would you prefer?

Sources:
[1] https://github.com/curl/doh.
[2] Gist / patch referencing doh.h and Curl_doh.
[3] https://github.com/curl/curl/releases.


🏁 Script executed:

find . -name "doh.h" -type f 2>/dev/null | head -20

Repository: nodesource/nsolid

Length of output: 82


🏁 Script executed:

cat -n deps/curl/lib/doh.h | sed -n '115,190p'

Repository: nodesource/nsolid

Length of output: 2604


🏁 Script executed:

rg -n "Curl_doh\s*\(" deps/curl/ --type c | head -50

Repository: nodesource/nsolid

Length of output: 588


Macro parameter count does not match function signature.

The Curl_doh function signature (lines 119-120) takes 4 parameters: (struct Curl_easy *data, const char *hostname, int port, int ip_version). The disabled-DoH macro on line 183 incorrectly defines 5 parameters: Curl_doh(a, b, c, d, e). All callers (e.g., deps/curl/lib/hostip.c:873) pass 4 arguments, so when CURL_DISABLE_DOH is defined, the macro expansion will fail. Additionally, the macro returns NULL instead of a CURLcode error value.

Fix: Remove the extra parameter and change the return value to an appropriate error code (e.g., CURLE_COULDNT_RESOLVE_HOST).

🤖 Prompt for AI Agents
In @deps/curl/lib/doh.h around lines 119 - 120, The disabled-DoH macro for
Curl_doh is wrong: update the macro so its parameter list matches the function
signature Curl_doh(struct Curl_easy *data, const char *hostname, int port, int
ip_version) (remove the extra fifth parameter) and change its return from NULL
to an appropriate CURLcode such as CURLE_COULDNT_RESOLVE_HOST so callers that
expect a CURLcode compile and get a proper error value when CURL_DISABLE_DOH is
defined.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (6)
deps/curl/lib/dllmain.c (1)

33-62: Add version guard for OPENSSL_thread_stop() availability.

Line 54 calls OPENSSL_thread_stop() unconditionally under PREVENT_OPENSSL_MEMLEAK, but this function was introduced in OpenSSL 3.0.0. If curl supports OpenSSL versions earlier than 3.0, add a version guard (e.g., #if OPENSSL_VERSION_NUMBER >= 0x30000000L) or document the minimum required OpenSSL version.

deps/curl/lib/curl_sasl.c (1)

275-283: Add defensive NULL checks for data->conn before dereferencing.

While all observed call sites guard this function with Curl_sasl_can_authenticate() checks and connection initialization ensures user is set via curlx_strdup() with error handling, the function dereferences data->conn->user[0] without verifying that data->conn is non-NULL. Although the practical risk is low due to call site guards and state machine context, adding explicit NULL checks would improve defensive coding practices:

if(!data || !data->conn || !data->conn->user || data->conn->user[0])
  return TRUE;

This ensures robustness against unexpected connection states and makes the code safer to refactor or reuse.

deps/curl/lib/conncache.h (1)

49-59: Initialize all struct cpool fields explicitly in Curl_cpool_init.

The fields num_conn, next_connection_id, next_easy_id, last_cleanup, and locked are used without explicit initialization in Curl_cpool_init (lines 121-134 of conncache.c). While the code relies on the containing structures (Curl_multi, Curl_share) being allocated with calloc, explicit initialization is necessary for robustness and clarity:

  • num_conn should be initialized to 0
  • next_connection_id and next_easy_id should be initialized to 0
  • last_cleanup should be initialized (e.g., to zero/current time)
  • locked bit should be explicitly set to 0

Additionally, ensure Curl_cpool_destroy properly resets these fields to prevent stale state if a pool is reused.

deps/curl/lib/altsvc.c (1)

174-183: Don’t treat malformed alt-svc lines as OOM

altsvc_create() can return NULL for invalid ALPN/host inputs, not just allocation failure. Returning CURLE_OUT_OF_MEMORY here breaks the “ignore syntactical errors” contract and can abort loading on a bad line. Pre-validate inputs and only use OOM for allocation failure.

🐛 Proposed fix
-    as = altsvc_create(&srchost, &dsthost, &srcalpn, &dstalpn,
-                       (size_t)srcport, (size_t)dstport);
-    if(as) {
+    enum alpnid srcid = Curl_str2alpnid(&srcalpn);
+    enum alpnid dstid = Curl_str2alpnid(&dstalpn);
+    if(!srcid || !dstid ||
+       !curlx_strlen(&srchost) || !curlx_strlen(&dsthost))
+      return CURLE_OK; /* malformed line, ignore */
+    as = altsvc_createid(curlx_str(&srchost), curlx_strlen(&srchost),
+                         curlx_str(&dsthost), curlx_strlen(&dsthost),
+                         srcid, dstid,
+                         (size_t)srcport, (size_t)dstport);
+    if(as) {
       as->expires = expires;
       as->prio = 0; /* not supported to just set zero */
       as->persist = persist ? 1 : 0;
       Curl_llist_append(&asi->list, as, &as->node);
     }
     else
       return CURLE_OUT_OF_MEMORY;
deps/curl/lib/cookie.c (1)

1315-1349: Ensure okay reflects whether any cookies matched

The function documentation states: "'okay' is TRUE when there is a list returned." However, *okay is set TRUE unconditionally, even when matches == 0 and the list is empty. The single call site in http.c:2468 checks if(!result && okay) before processing cookies, relying on okay to indicate whether the list contains results.

Set *okay based on whether matches were found to align with documented behavior and call-site expectations:

🐛 Proposed fix
-  *okay = TRUE;
-  return CURLE_OK; /* success */
+  *okay = (matches > 0);
+  return CURLE_OK; /* success */
deps/curl/lib/asyn.h (1)

110-121: Update the Curl_async_getaddrinfo docblock in deps/curl/lib/asyn.h.

The comment incorrectly describes an old API returning a hostent with a "fourth argument" for memory allocation. The current signature returns CURLcode with only four parameters. Update to reflect the async semantics:

✏️ Suggested doc update
- * Returns name information about the given hostname and port number. If
- * successful, the 'hostent' is returned and the fourth argument will point to
- * memory we need to free after use. That memory *MUST* be freed with
- * Curl_freeaddrinfo(), nothing else.
- *
- * Each resolver backend must of course make sure to return data in the
- * correct format to comply with this.
+ * Starts an async resolve for the given hostname and port.
+ * Returns CURLE_OK when the resolve is started successfully; results are
+ * retrieved via Curl_async_is_resolved/Curl_async_await.
🤖 Fix all issues with AI agents
In `@deps/curl/lib/curlx/base64.c`:
- Around line 61-63: The API change made curlx_base64_decode accept uint8_t
**outptr but callers still use unsigned char **; update all call sites (in
http_ntlm, curl_sasl, vtls, rustls, openssl, spnego_sspi, spnego_gssapi) to
declare and pass uint8_t * (or uint8_t **) variables (e.g., change unsigned char
*hdr / *msg / *der / *ech_config / *chlg to uint8_t *hdr etc.) so types match,
or alternatively revert curlx_base64_decode to unsigned char ** to preserve the
original API—apply the change consistently across all seven call sites and
ensure prototypes/headers are updated to the chosen type.

In `@deps/curl/lib/curlx/strerr.c`:
- Around line 270-275: The condition incorrectly negates strerror_s's return
value: strerror_s returns 0 on success, so the code currently treats successful
CRT messages as failure and falls through to
get_winsock_error/curlx_get_winapi_error and finally SNPRINTF; fix by changing
the check to test for strerror_s failure (non-zero) or an "Unknown error" result
(e.g., (strerror_s(buf, buflen, err) != 0 || !strcmp(buf, "Unknown error"))),
then only if that indicates failure attempt get_winsock_error/get_winapi and
finally SNPRINTF; update the conditional around strerror_s, get_winsock_error,
curlx_get_winapi_error and the SNPRINTF fallback to respect this corrected
logic.

In `@deps/curl/lib/doh.h`:
- Around line 115-120: The comment for Curl_doh is inaccurate: update the
docblock for Curl_doh() to state that the function returns a CURLcode
(indicating success or specific error), remove the incorrect claim that it
returns a Curl_addrinfo*, and briefly note that the resolved address info is not
returned directly by the function signature (so callers must check the
appropriate state or output mechanism used by Curl_doh).

In `@deps/curl/lib/easy.c`:
- Around line 1066-1075: Replace the direct free of outcurl->cookies with the
cookie cleanup API: when cleaning up after a duphandle failure in the block that
checks outcurl, call Curl_cookie_cleanup(outcurl) (or the appropriate per-handle
cookie cleanup function) instead of curlx_free(outcurl->cookies) so the internal
cookie state is properly cleared; keep the surrounding cleanup calls
(Curl_altsvc_cleanup, Curl_hsts_cleanup, Curl_freeset, curlx_free(outcurl))
intact and guard the change with the existing CURL_DISABLE_COOKIES conditional
compilation macro.
♻️ Duplicate comments (9)
deps/curl/lib/curl_get_line.c (1)

31-31: Fix unused macro parameter.

appendnl(b) ignores b and always uses buf, which is misleading. Please update the macro to use the parameter or remove the parameter and update call sites accordingly.

deps/curl/include/curl/system.h (1)

137-143: Windows CE support should be removed per libcurl 8.18.0 breaking changes.

This issue was already flagged in a previous review. The UNDER_CE block should be deleted entirely rather than simplified, as libcurl 8.18.0 officially drops Windows CE / CeGCC support. Keeping this block contradicts the upstream decision.

deps/curl/lib/curlx/fopen.c (5)

319-324: Direct errno assignment bypasses portability macro.

The direct errno = EINVAL assignment at line 324 was previously flagged. This bypasses the CURL_SETERRNO portability macro required for cross-platform compatibility on platforms without errno support.


337-368: LGTM overall, with one duplicate concern.

The function correctly handles Unicode/non-Unicode paths with proper memory cleanup. The direct errno = EINVAL at line 355 was previously flagged for portability concerns.


375-406: LGTM overall, with one duplicate concern.

The function correctly wraps freopen with Unicode support and includes a MinGW compatibility declaration. The direct errno = EINVAL at line 393 was previously flagged for portability concerns.


408-437: Inconsistent UTF-8 conversion function usage.

This function uses curlx_convert_UTF8_to_wchar (line 415) and curlx_free (line 422), while nearby functions use fn_convert_UTF8_to_wchar and CURLX_FREE. This inconsistency should be unified for maintainability.

The direct errno = EINVAL at line 426 was previously flagged.


439-503: Retry logic concerns previously flagged.

The retry logic with 1ms sleep intervals and lack of error preservation via GetLastError() was previously flagged for review. The current implementation may spin unnecessarily for non-transient errors and doesn't provide callers with meaningful error codes.

deps/curl/lib/doh.h (1)

182-185: CURL_DISABLE_DOH macro signature/return still mismatches Curl_doh.
This repeats the earlier issue: the stub takes 5 args and returns NULL, but the function now returns CURLcode and takes 4 args. This will break builds when CURL_DISABLE_DOH is defined.

🐛 Proposed fix
-#define Curl_doh(a, b, c, d, e)    NULL
+#define Curl_doh(a, b, c, d)       CURLE_COULDNT_RESOLVE_HOST
deps/curl/lib/doh.c (1)

844-846: Fix typo in preprocessor directive on line 844.

#ifdef USE_HTTTPS should be #ifdef USE_HTTPSRR. The typo causes the conditional block to never execute as intended—when USE_HTTPSRR is defined, the preprocessor will skip the intended ifdef block and use the else branch instead, breaking the HTTPS RR logic.

🧹 Nitpick comments (2)
deps/curl/lib/curlx/fopen.c (2)

66-75: Inconsistent flags between MultiByteToWideChar calls.

The first call uses MB_ERR_INVALID_CHARS for strict validation, but the second call uses 0, which allows invalid characters to be replaced silently. If the first call succeeds, using 0 on the second call is safe, but for consistency and clarity, consider using the same flag for both calls.

♻️ Suggested improvement
-      if(MultiByteToWideChar(CP_UTF8, 0,
+      if(MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
                              str_utf8, -1, str_w, str_w_len) == 0) {

253-294: Consider unifying UTF-8 to wchar conversion functions for consistency.

This function uses curlx_convert_UTF8_to_wchar (line 265), while other file I/O functions in this file (curlx_fopen, curlx_open, curlx_freopen) use fn_convert_UTF8_to_wchar (e.g., lines 304, 344). Both conversion functions use different allocators: curlx_convert_UTF8_to_wchar uses curlx_malloc while fn_convert_UTF8_to_wchar uses CURLX_MALLOC. The current code correctly pairs each allocator with its corresponding free function, but the split adds maintenance complexity with two parallel implementations doing the same conversion.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1218adf and 32bc5d8.

📒 Files selected for processing (215)
  • deps/curl/curl.gyp
  • deps/curl/include/Makefile.in
  • deps/curl/include/curl/Makefile.in
  • deps/curl/include/curl/curl.h
  • deps/curl/include/curl/curlver.h
  • deps/curl/include/curl/easy.h
  • deps/curl/include/curl/header.h
  • deps/curl/include/curl/multi.h
  • deps/curl/include/curl/options.h
  • deps/curl/include/curl/system.h
  • deps/curl/include/curl/typecheck-gcc.h
  • deps/curl/include/curl/urlapi.h
  • deps/curl/include/curl/websockets.h
  • deps/curl/lib/CMakeLists.txt
  • deps/curl/lib/Makefile.am
  • deps/curl/lib/Makefile.in
  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/altsvc.c
  • deps/curl/lib/altsvc.h
  • deps/curl/lib/amigaos.c
  • deps/curl/lib/amigaos.h
  • deps/curl/lib/arpa_telnet.h
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/asyn.h
  • deps/curl/lib/bufq.c
  • deps/curl/lib/bufq.h
  • deps/curl/lib/bufref.c
  • deps/curl/lib/bufref.h
  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-h1-proxy.h
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-h2-proxy.h
  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/cf-haproxy.h
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-https-connect.h
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/cf-ip-happy.h
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/cfilters.c
  • deps/curl/lib/cfilters.h
  • deps/curl/lib/config-os400.h
  • deps/curl/lib/config-plan9.h
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/conncache.c
  • deps/curl/lib/conncache.h
  • deps/curl/lib/connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/content_encoding.c
  • deps/curl/lib/content_encoding.h
  • deps/curl/lib/cookie.c
  • deps/curl/lib/cookie.h
  • deps/curl/lib/cshutdn.c
  • deps/curl/lib/cshutdn.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_config-cmake.h.in
  • deps/curl/lib/curl_config.h.in
  • deps/curl/lib/curl_ctype.h
  • deps/curl/lib/curl_endian.c
  • deps/curl/lib/curl_fnmatch.c
  • deps/curl/lib/curl_fnmatch.h
  • deps/curl/lib/curl_fopen.c
  • deps/curl/lib/curl_fopen.h
  • deps/curl/lib/curl_get_line.c
  • deps/curl/lib/curl_get_line.h
  • deps/curl/lib/curl_gethostname.c
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_gssapi.h
  • deps/curl/lib/curl_hmac.h
  • deps/curl/lib/curl_ldap.h
  • deps/curl/lib/curl_md4.h
  • deps/curl/lib/curl_memory.h
  • deps/curl/lib/curl_memrchr.c
  • deps/curl/lib/curl_memrchr.h
  • deps/curl/lib/curl_ntlm_core.c
  • deps/curl/lib/curl_ntlm_core.h
  • deps/curl/lib/curl_range.c
  • deps/curl/lib/curl_range.h
  • deps/curl/lib/curl_rtmp.c
  • deps/curl/lib/curl_sasl.c
  • deps/curl/lib/curl_sasl.h
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curl_setup_once.h
  • deps/curl/lib/curl_sha256.h
  • deps/curl/lib/curl_sha512_256.c
  • deps/curl/lib/curl_sha512_256.h
  • deps/curl/lib/curl_share.c
  • deps/curl/lib/curl_share.h
  • deps/curl/lib/curl_sspi.c
  • deps/curl/lib/curl_sspi.h
  • deps/curl/lib/curl_threads.c
  • deps/curl/lib/curl_trc.c
  • deps/curl/lib/curl_trc.h
  • deps/curl/lib/curlx/base64.c
  • deps/curl/lib/curlx/base64.h
  • deps/curl/lib/curlx/binmode.h
  • deps/curl/lib/curlx/curlx.h
  • deps/curl/lib/curlx/dynbuf.c
  • deps/curl/lib/curlx/dynbuf.h
  • deps/curl/lib/curlx/fopen.c
  • deps/curl/lib/curlx/fopen.h
  • deps/curl/lib/curlx/inet_ntop.c
  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curlx/inet_pton.h
  • deps/curl/lib/curlx/multibyte.c
  • deps/curl/lib/curlx/multibyte.h
  • deps/curl/lib/curlx/nonblock.c
  • deps/curl/lib/curlx/nonblock.h
  • deps/curl/lib/curlx/snprintf.h
  • deps/curl/lib/curlx/strcopy.c
  • deps/curl/lib/curlx/strcopy.h
  • deps/curl/lib/curlx/strerr.c
  • deps/curl/lib/curlx/strparse.c
  • deps/curl/lib/curlx/strparse.h
  • deps/curl/lib/curlx/timediff.c
  • deps/curl/lib/curlx/timediff.h
  • deps/curl/lib/curlx/timeval.c
  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/version_win32.c
  • deps/curl/lib/curlx/version_win32.h
  • deps/curl/lib/curlx/wait.c
  • deps/curl/lib/curlx/wait.h
  • deps/curl/lib/curlx/warnless.c
  • deps/curl/lib/curlx/warnless.h
  • deps/curl/lib/curlx/winapi.c
  • deps/curl/lib/cw-out.c
  • deps/curl/lib/cw-out.h
  • deps/curl/lib/cw-pause.c
  • deps/curl/lib/cw-pause.h
  • deps/curl/lib/dict.c
  • deps/curl/lib/dict.h
  • deps/curl/lib/dllmain.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/doh.h
  • deps/curl/lib/dynhds.c
  • deps/curl/lib/dynhds.h
  • deps/curl/lib/easy.c
  • deps/curl/lib/easy_lock.h
  • deps/curl/lib/easygetopt.c
  • deps/curl/lib/easyif.h
  • deps/curl/lib/easyoptions.c
  • deps/curl/lib/easyoptions.h
  • deps/curl/lib/escape.c
  • deps/curl/lib/escape.h
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/fake_addrinfo.h
  • deps/curl/lib/file.c
  • deps/curl/lib/file.h
  • deps/curl/lib/fileinfo.c
  • deps/curl/lib/fileinfo.h
  • deps/curl/lib/formdata.c
  • deps/curl/lib/formdata.h
  • deps/curl/lib/ftp.c
  • deps/curl/lib/ftp.h
  • deps/curl/lib/ftplistparser.c
  • deps/curl/lib/ftplistparser.h
  • deps/curl/lib/functypes.h
  • deps/curl/lib/getenv.c
  • deps/curl/lib/getinfo.c
  • deps/curl/lib/getinfo.h
  • deps/curl/lib/gopher.c
  • deps/curl/lib/gopher.h
  • deps/curl/lib/hash.c
  • deps/curl/lib/hash.h
  • deps/curl/lib/headers.c
  • deps/curl/lib/headers.h
  • deps/curl/lib/hmac.c
  • deps/curl/lib/hostip.c
  • deps/curl/lib/hostip.h
  • deps/curl/lib/hostip4.c
  • deps/curl/lib/hostip6.c
  • deps/curl/lib/hsts.c
  • deps/curl/lib/hsts.h
  • deps/curl/lib/http.c
  • deps/curl/lib/http.h
  • deps/curl/lib/http1.c
  • deps/curl/lib/http1.h
  • deps/curl/lib/http2.c
  • deps/curl/lib/http2.h
  • deps/curl/lib/http_aws_sigv4.c
  • deps/curl/lib/http_aws_sigv4.h
  • deps/curl/lib/http_chunks.c
  • deps/curl/lib/http_chunks.h
  • deps/curl/lib/http_digest.c
  • deps/curl/lib/http_negotiate.c
  • deps/curl/lib/http_negotiate.h
  • deps/curl/lib/http_ntlm.c
  • deps/curl/lib/http_ntlm.h
  • deps/curl/lib/http_proxy.c
  • deps/curl/lib/http_proxy.h
  • deps/curl/lib/httpsrr.c
  • deps/curl/lib/httpsrr.h
  • deps/curl/lib/idn.c
  • deps/curl/lib/idn.h
  • deps/curl/lib/if2ip.c
  • deps/curl/lib/if2ip.h
  • deps/curl/lib/imap.c
  • deps/curl/lib/imap.h
  • deps/curl/lib/ldap.c
  • deps/curl/lib/llist.c
  • deps/curl/lib/llist.h
  • deps/curl/lib/macos.c
  • deps/curl/lib/macos.h
  • deps/curl/lib/md4.c
  • deps/curl/lib/md5.c
  • deps/curl/lib/memdebug.c
  • deps/curl/lib/memdebug.h
  • deps/curl/lib/mime.c
  • deps/curl/lib/mime.h
  • deps/curl/lib/mprintf.c
💤 Files with no reviewable changes (22)
  • deps/curl/lib/curl_fopen.h
  • deps/curl/lib/escape.h
  • deps/curl/lib/dynhds.h
  • deps/curl/lib/curl_md4.h
  • deps/curl/lib/curlx/wait.h
  • deps/curl/lib/curlx/nonblock.h
  • deps/curl/lib/cshutdn.h
  • deps/curl/lib/curl_sasl.h
  • deps/curl/lib/cf-h1-proxy.h
  • deps/curl/lib/dict.h
  • deps/curl/lib/curlx/timediff.h
  • deps/curl/lib/curl_get_line.h
  • deps/curl/lib/file.h
  • deps/curl/lib/easyif.h
  • deps/curl/lib/curlx/version_win32.h
  • deps/curl/lib/cf-https-connect.h
  • deps/curl/lib/curl_memory.h
  • deps/curl/lib/cf-h2-proxy.h
  • deps/curl/lib/curl_endian.c
  • deps/curl/lib/curl_sspi.h
  • deps/curl/lib/curl_hmac.h
  • deps/curl/lib/curl_fnmatch.h
🚧 Files skipped from review as they are similar to previous changes (37)
  • deps/curl/include/curl/options.h
  • deps/curl/lib/fake_addrinfo.h
  • deps/curl/lib/curlx/version_win32.c
  • deps/curl/lib/curl_range.h
  • deps/curl/include/curl/header.h
  • deps/curl/lib/cw-pause.c
  • deps/curl/lib/curlx/inet_pton.h
  • deps/curl/lib/curlx/strcopy.c
  • deps/curl/lib/curlx/nonblock.c
  • deps/curl/lib/content_encoding.h
  • deps/curl/lib/curlx/binmode.h
  • deps/curl/lib/curlx/strcopy.h
  • deps/curl/lib/curl_sspi.c
  • deps/curl/include/curl/websockets.h
  • deps/curl/include/curl/typecheck-gcc.h
  • deps/curl/lib/curlx/warnless.h
  • deps/curl/lib/arpa_telnet.h
  • deps/curl/lib/curl_memrchr.h
  • deps/curl/lib/cfilters.h
  • deps/curl/lib/curlx/base64.h
  • deps/curl/lib/cf-ip-happy.h
  • deps/curl/include/curl/Makefile.in
  • deps/curl/lib/escape.c
  • deps/curl/include/curl/urlapi.h
  • deps/curl/lib/curl_threads.c
  • deps/curl/lib/curl_ntlm_core.h
  • deps/curl/lib/curlx/inet_ntop.h
  • deps/curl/lib/easyoptions.h
  • deps/curl/lib/curlx/timeval.h
  • deps/curl/lib/curlx/timediff.c
  • deps/curl/lib/curl_sha512_256.h
  • deps/curl/lib/easygetopt.c
  • deps/curl/lib/fileinfo.c
  • deps/curl/include/Makefile.in
  • deps/curl/lib/curl_memrchr.c
  • deps/curl/lib/bufref.c
  • deps/curl/include/curl/multi.h
🧰 Additional context used
🧠 Learnings (69)
📚 Learning: 2025-12-03T14:35:32.707Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:32.707Z
Learning: Applies to deps/grpc/src/core/util/**/*.{cc,h,cpp} : Use string manipulation functions from `string.h` and `string.cc`

Applied to files:

  • deps/curl/lib/curlx/strerr.c
  • deps/curl/lib/curlx/strparse.c
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_gethostname.c
  • deps/curl/lib/curlx/strparse.h
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/hpack_{encoder,parser}.{h,cc} : Implement HPACK (header compression algorithm as per RFC 7541) in the CHTTP2 transport to compress headers of gRPC requests and responses

Applied to files:

  • deps/curl/lib/cf-haproxy.h
  • deps/curl/lib/content_encoding.c
  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/hpack*.{h,cc} : HPACK header compression/decompression must comply with RFC 7541 specifications

Applied to files:

  • deps/curl/lib/cf-haproxy.h
  • deps/curl/lib/cf-haproxy.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:32:52.516Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/iomgr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:52.516Z
Learning: Use `grpc_pollset` abstraction to efficiently monitor file descriptors for I/O events across multiple file descriptors

Applied to files:

  • deps/curl/lib/cshutdn.c
📚 Learning: 2025-12-03T14:35:32.707Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:32.707Z
Learning: Applies to deps/grpc/src/core/util/**/*.{cc,h,cpp} : Use time-related functions from `time.h` and `time.cc`

Applied to files:

  • deps/curl/lib/config-os400.h
  • deps/curl/lib/curlx/timeval.c
📚 Learning: 2025-12-03T14:29:08.569Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:08.569Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/{alts_credentials.h,alts_credentials.cc} : Implement credentials for ALTS transport security in `alts_credentials.h` / `alts_credentials.cc`

Applied to files:

  • deps/curl/lib/altsvc.h
  • deps/curl/lib/altsvc.c
📚 Learning: 2025-12-03T14:29:05.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:05.695Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/alts_credentials.{h,cc} : Use ALTS (Application Layer Transport Security) credentials to configure ALTS security for the transport

Applied to files:

  • deps/curl/lib/altsvc.h
  • deps/curl/lib/altsvc.c
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/*address*.{h,cc} : Design address utility functions to be efficient and avoid common pitfalls when working with network addresses

Applied to files:

  • deps/curl/lib/curlx/warnless.c
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:31:59.979Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:59.979Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/*sockaddr_utils.{h,cc} : Work with `sockaddr` structures using functions from `sockaddr_utils.h`/`sockaddr_utils.cc`, including converting to/from string representations and comparing for equality

Applied to files:

  • deps/curl/lib/curlx/warnless.c
  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/connect.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace_flags.yaml : Add new trace flags as entries in the `trace_flags.yaml` file with the flag name and a brief description of what it does

Applied to files:

  • deps/curl/lib/curl_trc.c
  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/security/**/*.{h,cc} : Implement security handshakers responsible for performing TLS and ALTS handshakes in the security/ subdirectory

Applied to files:

  • deps/curl/lib/Makefile.inc
  • deps/curl/curl.gyp
📚 Learning: 2025-12-03T14:35:21.897Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/tsi/ssl/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:21.897Z
Learning: Applies to deps/grpc/src/core/tsi/ssl/**/*.{c,cc,cpp,h,hpp} : Keep OpenSSL up-to-date to ensure that gRPC applications are secure

Applied to files:

  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/curl_sha512_256.c
  • deps/curl/curl.gyp
  • deps/curl/lib/curl_config.h.in
  • deps/curl/lib/curl_gssapi.c
  • deps/curl/lib/curl_ntlm_core.c
📚 Learning: 2025-12-03T14:29:08.569Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:08.569Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/{tls_credentials.h,tls_credentials.cc} : Implement credentials for TLS transport security in `tls_credentials.h` / `tls_credentials.cc`

Applied to files:

  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/curl_gssapi.c
📚 Learning: 2025-12-03T14:29:05.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:05.695Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/tls_credentials.{h,cc} : Use TLS (Transport Layer Security) credentials to configure TLS security for the Chttp2 transport

Applied to files:

  • deps/curl/lib/Makefile.inc
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/writing.cc : CHTTP2 writing operations must handle writing data to the wire using writing.cc

Applied to files:

  • deps/curl/lib/cw-out.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:54.774Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:54.774Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/sockaddr_utils.{h,cc} : Use `sockaddr_utils.h` / `sockaddr_utils.cc` for working with `sockaddr` structures, including converting them to/from string representations and comparing them for equality

Applied to files:

  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/connect.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/{sockaddr_utils.h,sockaddr_utils.cc} : Use `sockaddr_utils.h` and `sockaddr_utils.cc` for working with `sockaddr` structures, including converting them to and from string representations, and comparing them for equality

Applied to files:

  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/connect.c
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:31:54.774Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:54.774Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/parse_address.{h,cc} : Use `parse_address.h` / `parse_address.cc` for parsing string representations of network addresses into `grpc_resolved_address` structures

Applied to files:

  • deps/curl/lib/curlx/inet_pton.c
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/curl_addrinfo.c
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/c_ares/**/*.{c,cc,cpp,h,hpp} : Use c-ares library for DNS resolution implementations in the c_ares subdirectory

Applied to files:

  • deps/curl/curl.gyp
  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/asyn.h
  • deps/curl/lib/curl_config.h.in
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/amigaos.c
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:31:58.078Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:58.078Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/{parse_address.h,parse_address.cc} : Use `parse_address.h` and `parse_address.cc` for parsing string representations of network addresses into `grpc_resolved_address` structures

Applied to files:

  • deps/curl/lib/curl_addrinfo.h
📚 Learning: 2025-12-03T14:34:02.613Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:02.613Z
Learning: Applies to deps/grpc/src/core/resolver/sockaddr/**/*.{h,cc} : Use socket address lists for name resolution when implementing the sockaddr resolver plugin

Applied to files:

  • deps/curl/lib/curl_addrinfo.h
  • deps/curl/lib/cf-socket.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/fake_addrinfo.c
  • deps/curl/lib/curl_addrinfo.c
  • deps/curl/lib/curl_setup.h
  • deps/curl/lib/config-win32.h
  • deps/curl/lib/curlx/inet_ntop.c
📚 Learning: 2025-12-03T14:31:59.979Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/address_utils/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:59.979Z
Learning: Applies to deps/grpc/src/core/lib/address_utils/**/*parse_address.{h,cc} : Parse string representations of network addresses into `grpc_resolved_address` structures using functions from `parse_address.h`/`parse_address.cc`

Applied to files:

  • deps/curl/lib/curl_addrinfo.h
📚 Learning: 2025-12-03T14:31:41.247Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:41.247Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : The HTTP CONNECT handshaker implementation should be in `http_connect_handshaker.cc` for establishing connections to target servers through HTTP proxies

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/*.{h,cc} : Implement the HTTP CONNECT handshaker in the http_connect/ subdirectory

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : HTTP CONNECT handshaker implementation should be contained in `http_connect_handshaker.cc`

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: The HTTP CONNECT handshaker is responsible for establishing connections to target servers through HTTP proxies supporting the CONNECT method

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:31:36.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:36.421Z
Learning: Applies to deps/grpc/src/core/handshaker/http_connect/**/http_connect_handshaker.cc : HTTP CONNECT handshaker implementation should be placed in `http_connect_handshaker.cc`

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/chttp2_transport.{h,cc} : Support HTTP/2 stream multiplexing over a single TCP connection for high performance and low latency in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/curl_setup.h
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/client/chttp2_connector.{h,cc} : Implement the client-side connector responsible for creating new CHTTP2 transport instances

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:31:36.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:36.421Z
Learning: HTTP CONNECT handshaker should be used in conjunction with security handshakers, such as the TLS handshaker, to establish secure connections to target servers

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:31:35.695Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/http_connect/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:35.695Z
Learning: HTTP CONNECT handshaker should be used in conjunction with security handshakers (such as TLS handshaker) to establish secure connections to target servers

Applied to files:

  • deps/curl/lib/cf-h1-proxy.c
📚 Learning: 2025-12-03T14:34:02.613Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:02.613Z
Learning: Applies to deps/grpc/src/core/resolver/dns/**/*.{h,cc} : Use DNS for name resolution when implementing the DNS resolver plugin

Applied to files:

  • deps/curl/include/curl/curl.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/doh.h
  • deps/curl/lib/asyn-base.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/alpn/**/*.{h,cc} : Implement ALPN (Application-Layer Protocol Negotiation) for selecting the HTTP/2 protocol during the TLS handshake

Applied to files:

  • deps/curl/lib/connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/altsvc.c
  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/alpn/*.{h,cc} : ALPN (Application-Layer Protocol Negotiation) code must be used to select the HTTP/2 protocol during TLS handshake in alpn/ directory

Applied to files:

  • deps/curl/lib/connect.c
  • deps/curl/lib/connect.h
  • deps/curl/lib/altsvc.c
  • deps/curl/lib/cf-https-connect.c
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use the `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use the `GRPC_TRACE_FLAG_ENABLED(tracer)` macro to check if a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:26.248Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:26.248Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/trace*.{h,cc} : Use `GRPC_TRACE_DLOG(tracer, level)` macro to log trace messages in debug builds when a trace flag is enabled in gRPC core code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use `GRPC_TRACE_LOG(tracer, level)` macro to log trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:24.501Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:24.501Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,h} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:32:27.692Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/debug/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:27.692Z
Learning: Applies to deps/grpc/src/core/lib/debug/**/*.{cc,cpp,cxx,c,h,hpp} : Use `GRPC_TRACE_VLOG(tracer, level)` macro to log verbose trace messages when a trace flag is enabled in gRPC C++ code

Applied to files:

  • deps/curl/lib/curl_trc.h
📚 Learning: 2025-12-03T14:33:59.671Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:33:59.671Z
Learning: Choose the appropriate DNS resolver implementation (c-ares, EventEngine, or native OS resolver) based on your application's performance requirements

Applied to files:

  • deps/curl/lib/asyn.h
  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/asyn-ares.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:35:34.369Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:34.369Z
Learning: Applies to deps/grpc/src/core/util/src/**/host_port.{h,cc} : Host and port string manipulation utilities should be implemented in `host_port.h` and `host_port.cc`

Applied to files:

  • deps/curl/lib/cf-socket.h
📚 Learning: 2025-12-03T14:34:28.190Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/sockaddr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:28.190Z
Learning: Applies to deps/grpc/src/core/resolver/sockaddr/**/sockaddr_resolver.{h,cc} : Implement the `Resolver` interface for name resolution in sockaddr_resolver.h / sockaddr_resolver.cc

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:34:21.252Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/sockaddr/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:21.252Z
Learning: Use sockaddr resolver implementation for name resolution from a list of socket addresses

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/native/**/*.{c,cc,cpp,h,hpp} : Use native operating system DNS resolver for DNS resolution implementations in the native subdirectory

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
  • deps/curl/lib/doh.c
  • deps/curl/lib/config-win32.h
📚 Learning: 2025-12-03T14:34:07.310Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/resolver/dns/GEMINI.md:0-0
Timestamp: 2025-12-03T14:34:07.310Z
Learning: Applies to deps/grpc/src/core/resolver/dns/event_engine/**/*.{c,cc,cpp,h,hpp} : Use EventEngine for DNS resolution implementations in the event_engine subdirectory

Applied to files:

  • deps/curl/lib/asyn-thrdd.c
📚 Learning: 2025-12-03T14:35:35.065Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:35.065Z
Learning: Applies to deps/grpc/src/core/util/src/core/util/time.{h,cc} : Time-related functions should be implemented in dedicated header and implementation files (time.h / time.cc)

Applied to files:

  • deps/curl/lib/curlx/timeval.c
📚 Learning: 2025-12-03T14:35:34.369Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/util/GEMINI.md:0-0
Timestamp: 2025-12-03T14:35:34.369Z
Learning: Applies to deps/grpc/src/core/util/src/**/time.{h,cc} : Time-related functions should be implemented in `time.h` and `time.cc`

Applied to files:

  • deps/curl/lib/curlx/timeval.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/{chttp2_transport,frame}.{h,cc} : Implement logic for parsing and serializing HTTP/2 frames in the CHTTP2 transport core

Applied to files:

  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:30.011Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/handshaker/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:30.011Z
Learning: Applies to deps/grpc/src/core/handshaker/tcp_connect/**/*.{h,cc} : Implement a basic handshaker for TCP connections in the tcp_connect/ subdirectory

Applied to files:

  • deps/curl/lib/cf-https-connect.c
  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2025-12-03T14:29:08.569Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/transport/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:08.569Z
Learning: Applies to deps/grpc/src/core/credentials/transport/**/{xds_credentials.h,xds_credentials.cc} : Implement credentials for XDS transport security in `xds_credentials.h` / `xds_credentials.cc`

Applied to files:

  • deps/curl/lib/curl_gssapi.c
📚 Learning: 2025-12-03T14:28:57.122Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/credentials/call/GEMINI.md:0-0
Timestamp: 2025-12-03T14:28:57.122Z
Learning: Applies to deps/grpc/src/core/credentials/call/**/call_creds_util.{h,cc} : Use utility functions from `call_creds_util.h` / `call_creds_util.cc` for working with call credentials

Applied to files:

  • deps/curl/lib/curl_gssapi.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Any changes to PH2 code must be accompanied by relevant tests in test/core/transport/chttp2/ directory, ensuring existing tests in http2_client_transport_test.cc and http2_server_transport_test.cc pass

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/writable_streams.{h,cc} : PH2 writable stream tracking must use writable_streams.{h,cc} to track streams with available data and flow control tokens

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/stream.h : PH2 stream representation must use the Stream class defined in stream.h for managing HTTP2 stream state and operations

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Support all features of HTTP/2, including multiplexing, flow control, and header compression, in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/http2_status.h : PH2 error handling must use http2_status.h custom error types to distinguish between Stream and Connection level errors

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/chttp2_transport.{h,cc} : CHTTP2 transport implementation must use combiner for concurrency management as defined in lib/iomgr/combiner.h

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
  • deps/curl/lib/cf-ip-happy.c
  • deps/curl/lib/curl_setup.h
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/flow_control.{h,cc} : Implement both stream-level and connection-level flow control in the CHTTP2 transport to prevent overconsumption of memory and ensure fair bandwidth distribution

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: When implementing features in PH2 transport, always first check the CHTTP2 implementation in this directory for reference and use the mapping provided in 'Key classes in CHTTP2 and their PH2 equivalents' section

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:31:00.865Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2025-12-03T14:31:00.865Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/transport/frame.{h,cc} : Implement C++ classes to represent different types of HTTP/2 frames in the CHTTP2 transport

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2026-01-16T10:44:52.116Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chttp2/GEMINI.md:0-0
Timestamp: 2026-01-16T10:44:52.116Z
Learning: Applies to deps/grpc/src/core/ext/transport/chttp2/**/frame*.{h,cc} : HTTP/2 transport implementation must parse and serialize HTTP/2 frames (HEADERS, DATA, SETTINGS, PING, GOAWAY, WINDOW_UPDATE, RST_STREAM, CONTINUATION) in compliance with RFC 9113

Applied to files:

  • deps/curl/lib/cf-h2-proxy.c
📚 Learning: 2025-12-03T14:32:10.553Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/lib/channel/GEMINI.md:0-0
Timestamp: 2025-12-03T14:32:10.553Z
Learning: Applies to deps/grpc/src/core/lib/channel/**/{promise_based_filter,connected_channel}.{h,cc} : When implementing new channel filters or transport-based channels, prefer promise-based implementations over legacy callback-based implementations as part of the migration to the new promise-based architecture.

Applied to files:

  • deps/curl/lib/cf-socket.c
  • deps/curl/lib/cfilters.c
📚 Learning: 2025-12-03T14:29:25.191Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/filters/channel_idle/GEMINI.md:0-0
Timestamp: 2025-12-03T14:29:25.191Z
Learning: Applies to deps/grpc/src/core/ext/filters/channel_idle/**/*channel*filter*.{h,cc} : Use the 'legacy' prefix in class names to indicate that filters are based on the older channel filter API and will likely be replaced by a more modern implementation in the future

Applied to files:

  • deps/curl/lib/cf-socket.c
📚 Learning: 2025-12-03T14:30:51.421Z
Learnt from: CR
Repo: nodesource/nsolid PR: 0
File: deps/grpc/src/core/ext/transport/chaotic_good/GEMINI.md:0-0
Timestamp: 2025-12-03T14:30:51.421Z
Learning: Applies to deps/grpc/src/core/ext/transport/chaotic_good/**/chaotic_good/client_transport.{h,cc} : Implement client-side transport logic in `client_transport.h` and `client_transport.cc`

Applied to files:

  • deps/curl/lib/cf-ip-happy.c
🪛 Cppcheck (2.19.0)
deps/curl/lib/curlx/warnless.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/cf-h1-proxy.c

[error] 390-390: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

deps/curl/lib/curlx/timeval.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/conncache.c

[error] 375-375: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

deps/curl/lib/cookie.c

[error] 1436-1436: There is an unknown macro here somewhere. Configuration is required. If CURL_FORMAT_CURL_OFF_T is a macro then please configure it.

(unknownMacro)

deps/curl/lib/amigaos.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/curl_fopen.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/curlx/inet_ntop.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

deps/curl/lib/easyoptions.c

[error] 118-118: failed to evaluate #if condition, undefined function-like macro invocation

(syntaxError)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: lint-js-and-md
  • GitHub Check: test-linux (ubuntu-24.04)
  • GitHub Check: test-linux (ubuntu-24.04-arm)
  • GitHub Check: test-macOS
  • GitHub Check: build-tarball

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines 61 to 63
CURLcode curlx_base64_decode(const char *src,
unsigned char **outptr, size_t *outlen)
uint8_t **outptr, size_t *outlen)
{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, let's examine the actual function definition
echo "=== Function definition in base64.c ==="
sed -n '61,65p' deps/curl/lib/curlx/base64.c

# Find all calls to curlx_base64_decode
echo -e "\n=== All calls to curlx_base64_decode ==="
rg -n "curlx_base64_decode" --type c -B2 -A2

# Check if there's a function declaration in a header
echo -e "\n=== Header files defining curlx_base64_decode ==="
fd -e h | xargs grep -l "curlx_base64_decode" 2>/dev/null

Repository: nodesource/nsolid

Length of output: 3841


🏁 Script executed:

#!/bin/bash
# Let's also check the memory wrapper changes mentioned
echo "=== Lines 99-101 (malloc change) ==="
sed -n '99,101p' deps/curl/lib/curlx/base64.c

echo -e "\n=== Lines 161-162 (free change) ==="
sed -n '161,162p' deps/curl/lib/curlx/base64.c

# Check the variable declarations to see if outptr is indeed used with uint8_t
echo -e "\n=== Full context around function signature ==="
sed -n '61,75p' deps/curl/lib/curlx/base64.c

Repository: nodesource/nsolid

Length of output: 666


🏁 Script executed:

#!/bin/bash
# Check the variable types in each caller file

echo "=== http_ntlm.c - hdr variable ==="
sed -n '60,75p' deps/curl/lib/http_ntlm.c | grep -E "(uint8_t|unsigned char|^\s*\w+\s+\*?hdr)"

echo -e "\n=== curl_sasl.c - msg variable ==="
sed -n '225,240p' deps/curl/lib/curl_sasl.c | grep -E "(uint8_t|unsigned char|^\s*\w+\s+\*?msg)"

echo -e "\n=== vtls.c - der variable ==="
sed -n '725,740p' deps/curl/lib/vtls/vtls.c | grep -E "(uint8_t|unsigned char|der)"

echo -e "\n=== rustls.c - ech_config variable ==="
sed -n '940,960p' deps/curl/lib/vtls/rustls.c | grep -E "(uint8_t|unsigned char|ech_config)"

echo -e "\n=== openssl.c - ech_config variable ==="
sed -n '3460,3475p' deps/curl/lib/vtls/openssl.c | grep -E "(uint8_t|unsigned char|ech_config)"

echo -e "\n=== spnego_sspi.c - chlg variable ==="
sed -n '165,180p' deps/curl/lib/vauth/spnego_sspi.c | grep -E "(uint8_t|unsigned char|chlg)"

echo -e "\n=== spnego_gssapi.c - chlg variable ==="
sed -n '125,140p' deps/curl/lib/vauth/spnego_gssapi.c | grep -E "(uint8_t|unsigned char|chlg)"

Repository: nodesource/nsolid

Length of output: 961


🏁 Script executed:

#!/bin/bash
# More thorough search for variable declarations in each file

echo "=== http_ntlm.c - hdr declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?hdr\b" deps/curl/lib/http_ntlm.c -A1 -B1

echo -e "\n=== curl_sasl.c - msg declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?msg\b" deps/curl/lib/curl_sasl.c -A1 -B1

echo -e "\n=== vtls.c - der declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?der\b" deps/curl/lib/vtls/vtls.c -A1 -B1

echo -e "\n=== rustls.c - ech_config declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?ech_config\b" deps/curl/lib/vtls/rustls.c -A1 -B1

echo -e "\n=== openssl.c - ech_config declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?ech_config\b" deps/curl/lib/vtls/openssl.c -A1 -B1

echo -e "\n=== spnego_sspi.c - chlg declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?chlg\b" deps/curl/lib/vauth/spnego_sspi.c -A1 -B1

echo -e "\n=== spnego_gssapi.c - chlg declaration ==="
rg -n "^\s*(uint8_t|unsigned char).*\*?chlg\b" deps/curl/lib/vauth/spnego_gssapi.c -A1 -B1

Repository: nodesource/nsolid

Length of output: 1061


API signature change not properly propagated to all callers.

The function signature was changed to uint8_t **outptr, but all 7 callers still declare and pass unsigned char ** variables:

  • http_ntlm.c line 71: unsigned char *hdr
  • curl_sasl.c line 230: unsigned char *msg
  • vtls.c line 690: unsigned char **der
  • rustls.c line 914: unsigned char *ech_config
  • openssl.c line 3445: unsigned char *ech_config
  • spnego_sspi.c line 90: unsigned char *chlg
  • spnego_gssapi.c line 82: unsigned char *chlg

Either update all callers to use uint8_t ** to match the new signature, or revert the function signature to unsigned char ** for backward compatibility. While uint8_t and unsigned char are typically equivalent, the API change introduces a type mismatch that should be resolved consistently across all call sites.

🤖 Prompt for AI Agents
In `@deps/curl/lib/curlx/base64.c` around lines 61 - 63, The API change made
curlx_base64_decode accept uint8_t **outptr but callers still use unsigned char
**; update all call sites (in http_ntlm, curl_sasl, vtls, rustls, openssl,
spnego_sspi, spnego_gssapi) to declare and pass uint8_t * (or uint8_t **)
variables (e.g., change unsigned char *hdr / *msg / *der / *ech_config / *chlg
to uint8_t *hdr etc.) so types match, or alternatively revert
curlx_base64_decode to unsigned char ** to preserve the original API—apply the
change consistently across all seven call sites and ensure prototypes/headers
are updated to the chosen type.

Comment on lines +270 to +275
if((!strerror_s(buf, buflen, err) || !strcmp(buf, "Unknown error")) &&
#ifdef USE_WINSOCK
!get_winsock_error(err, buf, buflen) &&
!get_winsock_error(err, buf, buflen) &&
#endif
!curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
}
!curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, find the exact file and examine the context around lines 270-275
find . -name "strerr.c" -type f | grep curl

Repository: nodesource/nsolid

Length of output: 91


🏁 Script executed:

# Get more context around those lines
head -n 280 deps/curl/lib/curlx/strerr.c | tail -n 20

Repository: nodesource/nsolid

Length of output: 581


🏁 Script executed:

# Also check lines before to understand the full function
head -n 300 deps/curl/lib/curlx/strerr.c | tail -n 40

Repository: nodesource/nsolid

Length of output: 1387


🌐 Web query:

strerror_s Windows CRT return value errno_t success

💡 Result:

strerror_s returns an errno_t: it returns 0 on success and a non‑zero error code on failure (runtime‑constraint or other error). [1][2]

Notes:

  • errno_t is (per C11 Annex K and common CRTs) a typedef for int. [2][3]

Sources:
[1] Microsoft strerror_s documentation (return value: "Zero if successful, an error code on failure").
[2] C11/CRT docs (errno_t is a typedef for int; bounds‑checked functions return errno_t and 0 on success).


Fix Windows strerror fallback gating.

strerror_s returns 0 on success and non-zero on failure. The current !strerror_s(...) condition incorrectly evaluates to true when a valid CRT message is produced, causing the Winsock/WinAPI fallbacks and final SNPRINTF to execute even on success, overwriting the valid error message.

Proposed fix
-  if((!strerror_s(buf, buflen, err) || !strcmp(buf, "Unknown error")) &&
+  if((strerror_s(buf, buflen, err) || !strcmp(buf, "Unknown error")) &&
 `#ifdef` USE_WINSOCK
      !get_winsock_error(err, buf, buflen) &&
 `#endif`
      !curlx_get_winapi_error((DWORD)err, buf, buflen))
     SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if((!strerror_s(buf, buflen, err) || !strcmp(buf, "Unknown error")) &&
#ifdef USE_WINSOCK
!get_winsock_error(err, buf, buflen) &&
!get_winsock_error(err, buf, buflen) &&
#endif
!curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
}
!curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
if((strerror_s(buf, buflen, err) || !strcmp(buf, "Unknown error")) &&
`#ifdef` USE_WINSOCK
!get_winsock_error(err, buf, buflen) &&
`#endif`
!curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
🤖 Prompt for AI Agents
In `@deps/curl/lib/curlx/strerr.c` around lines 270 - 275, The condition
incorrectly negates strerror_s's return value: strerror_s returns 0 on success,
so the code currently treats successful CRT messages as failure and falls
through to get_winsock_error/curlx_get_winapi_error and finally SNPRINTF; fix by
changing the check to test for strerror_s failure (non-zero) or an "Unknown
error" result (e.g., (strerror_s(buf, buflen, err) != 0 || !strcmp(buf, "Unknown
error"))), then only if that indicates failure attempt
get_winsock_error/get_winapi and finally SNPRINTF; update the conditional around
strerror_s, get_winsock_error, curlx_get_winapi_error and the SNPRINTF fallback
to respect this corrected logic.

Comment on lines +115 to +120
* Curl_doh() starts a name resolve using DoH (DNS-over-HTTPS). It resolves a
* name and returns a 'Curl_addrinfo *' with the address information.
*/

struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
const char *hostname,
int port,
int ip_version,
int *waitp);
CURLcode Curl_doh(struct Curl_easy *data, const char *hostname,
int port, int ip_version);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n deps/curl/lib/doh.h | sed -n '110,125p'

Repository: nodesource/nsolid

Length of output: 614


Update the Curl_doh comment to match the actual return type.
The comment on line 116 states the function returns Curl_addrinfo *, but the signature returns CURLcode.

Suggested fix
- * name and returns a 'Curl_addrinfo *' with the address information.
+ * name and returns a CURLcode indicating success or failure.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* Curl_doh() starts a name resolve using DoH (DNS-over-HTTPS). It resolves a
* name and returns a 'Curl_addrinfo *' with the address information.
*/
struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
const char *hostname,
int port,
int ip_version,
int *waitp);
CURLcode Curl_doh(struct Curl_easy *data, const char *hostname,
int port, int ip_version);
* Curl_doh() starts a name resolve using DoH (DNS-over-HTTPS). It resolves a
* name and returns a CURLcode indicating success or failure.
*/
CURLcode Curl_doh(struct Curl_easy *data, const char *hostname,
int port, int ip_version);
🤖 Prompt for AI Agents
In `@deps/curl/lib/doh.h` around lines 115 - 120, The comment for Curl_doh is
inaccurate: update the docblock for Curl_doh() to state that the function
returns a CURLcode (indicating success or specific error), remove the incorrect
claim that it returns a Curl_addrinfo*, and briefly note that the resolved
address info is not returned directly by the function signature (so callers must
check the appropriate state or output mechanism used by Curl_doh).

Comment on lines 1066 to 1075
if(outcurl) {
#ifndef CURL_DISABLE_COOKIES
free(outcurl->cookies);
curlx_free(outcurl->cookies);
#endif
curlx_dyn_free(&outcurl->state.headerb);
Curl_altsvc_cleanup(&outcurl->asi);
Curl_hsts_cleanup(&outcurl->hsts);
Curl_freeset(outcurl);
free(outcurl);
curlx_free(outcurl);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for cookie cleanup function definitions
rg -n 'Curl_cookie_cleanup\s*\(' deps/curl/lib/ -A 5

Repository: nodesource/nsolid

Length of output: 2982


🏁 Script executed:

# Search for cookie initialization/cleanup patterns
rg -n 'Curl_cookie_(init|cleanup)' deps/curl/lib/ -B 1 -A 1

Repository: nodesource/nsolid

Length of output: 3363


🏁 Script executed:

# Check what curlx_free does with cookies in other contexts
rg -n 'curlx_free.*cookie' deps/curl/lib/ -B 2 -A 2

Repository: nodesource/nsolid

Length of output: 920


🏁 Script executed:

# Check the function name and context around line 1066
sed -n '950,1100p' deps/curl/lib/easy.c | head -80

Repository: nodesource/nsolid

Length of output: 2552


🏁 Script executed:

# Find the fail label and cleanup code
sed -n '1066,1150p' deps/curl/lib/easy.c | cat -n

Repository: nodesource/nsolid

Length of output: 3156


Use Curl_cookie_cleanup for duphandle failure cleanup.

On failure, outcurl->cookies should be released via the cookie cleanup API to avoid skipping internal cookie state cleanup. Curl_cookie_cleanup() properly calls Curl_cookie_clearall() before freeing the structure, whereas direct curlx_free() omits this step.

🛠️ Suggested fix
-    curlx_free(outcurl->cookies);
+    Curl_cookie_cleanup(outcurl->cookies);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if(outcurl) {
#ifndef CURL_DISABLE_COOKIES
free(outcurl->cookies);
curlx_free(outcurl->cookies);
#endif
curlx_dyn_free(&outcurl->state.headerb);
Curl_altsvc_cleanup(&outcurl->asi);
Curl_hsts_cleanup(&outcurl->hsts);
Curl_freeset(outcurl);
free(outcurl);
curlx_free(outcurl);
}
if(outcurl) {
`#ifndef` CURL_DISABLE_COOKIES
Curl_cookie_cleanup(outcurl->cookies);
`#endif`
curlx_dyn_free(&outcurl->state.headerb);
Curl_altsvc_cleanup(&outcurl->asi);
Curl_hsts_cleanup(&outcurl->hsts);
Curl_freeset(outcurl);
curlx_free(outcurl);
}
🤖 Prompt for AI Agents
In `@deps/curl/lib/easy.c` around lines 1066 - 1075, Replace the direct free of
outcurl->cookies with the cookie cleanup API: when cleaning up after a duphandle
failure in the block that checks outcurl, call Curl_cookie_cleanup(outcurl) (or
the appropriate per-handle cookie cleanup function) instead of
curlx_free(outcurl->cookies) so the internal cookie state is properly cleared;
keep the surrounding cleanup calls (Curl_altsvc_cleanup, Curl_hsts_cleanup,
Curl_freeset, curlx_free(outcurl)) intact and guard the change with the existing
CURL_DISABLE_COOKIES conditional compilation macro.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants