#
428579f5 |
| 02-May-2024 |
Pavel Pavlov |
asyn-thread: fix curl_global_cleanup crash in Windows - Make sure that asynchronous resolves handled by Winsock are stopped before WSACleanup is called. This is implemented by
asyn-thread: fix curl_global_cleanup crash in Windows - Make sure that asynchronous resolves handled by Winsock are stopped before WSACleanup is called. This is implemented by ensuring that when Curl_resolver_kill is called (eg via multi_done) it will cancel the Winsock asynchronous resolve and wait for the cancellation to complete. Winsock runs the asynchronous completion routine immediately when a resolve is canceled. Prior to this change it was possible that during curl_global_cleanup "a DNS resolver thread created by GetAddrInfoExW did not terminate yet, however curl is already shutting down, deinitializing Winsock with WSACleanup() leading to an access violation." Background: If libcurl is built with the asynchronous threaded resolver option for Windows then it resolves in one of two ways. For Windows 8.1 and later, libcurl resolves by using the Winsock asynchronous resolver which does its own thread management. For older versions of Windows, libcurl resolves by creating a separate thread that calls getaddrinfo. This change only affects the former and it's already handled for the latter. Reported-by: Ch40zz@users.noreply.github.com Fixes https://github.com/curl/curl/issues/13509 Closes https://github.com/curl/curl/pull/13518
show more ...
|
#
62ae1f10 |
| 06-May-2024 |
Jay Satiro |
asyn-thread: fix Curl_thread_create result check - Compare to curl_thread_t_null instead of 0 for error. Currently for both supported thread libraries (pthreads and Windows) cur
asyn-thread: fix Curl_thread_create result check - Compare to curl_thread_t_null instead of 0 for error. Currently for both supported thread libraries (pthreads and Windows) curl_thread_t_null is defined as 0. However, the pattern throughout the code is to check against curl_thread_t_null and not 0 since for posterity some thread library may not use 0 for error. Closes https://github.com/curl/curl/pull/13542
show more ...
|
#
e411c98f |
| 11-Apr-2024 |
Viktor Szakats |
build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`) Before this patch, two macros were used to guard IPv6 features in curl sources: `ENABLE_IPV6` and `USE_IPV6`. This patch ma
build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`) Before this patch, two macros were used to guard IPv6 features in curl sources: `ENABLE_IPV6` and `USE_IPV6`. This patch makes the source use the latter for consistency with other similar switches. `-DENABLE_IPV6` remains accepted for compatibility as a synonym for `-DUSE_IPV6`, when passed to the compiler. `ENABLE_IPV6` also remains the name of the CMake and `Makefile.vc` options to control this feature. Closes #13349
show more ...
|
#
8243ad64 |
| 01-Feb-2024 |
Daniel Stenberg |
asyn-thread: use wakeup_close to close the read descriptor Reported-by: Dan Fandrich Ref: #12834 Closes #12836
|
#
f0ea11b5 |
| 01-Jan-2024 |
Viktor Szakats |
asyn-thread: silence `-Wcast-align` warning for Windows Seen with llvm/clang 17: ``` lib/asyn-thread.c:310:5: warning: cast from 'PCHAR' (aka 'char *') to 'struct thread_sync_data *'
asyn-thread: silence `-Wcast-align` warning for Windows Seen with llvm/clang 17: ``` lib/asyn-thread.c:310:5: warning: cast from 'PCHAR' (aka 'char *') to 'struct thread_sync_data *' increases required alignment from 1 to 8 [-Wcast-align] 310 | CONTAINING_RECORD(overlapped, struct thread_sync_data, w8.overlapped); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .../llvm-mingw/aarch64-w64-mingw32/include/winnt.h:717:48: note: expanded from macro 'CONTAINING_RECORD' 717 | #define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` Follow-up to a6bbc87f9e9ffb46a1801dfb983e7534825ed56b #12482 Ref: https://github.com/curl/curl/pull/12482#issuecomment-1873017261 Closes #12615
show more ...
|
#
a6bbc87f |
| 17-Nov-2023 |
Pavel Pavlov |
asyn-thread: use GetAddrInfoExW on >= Windows 8 For doing async DNS resolution instead of starting a thread for each request. Fixes #12481 Closes #12482
|
#
907eea08 |
| 14-Dec-2023 |
Daniel Stenberg |
Revert "urldata: move async resolver state from easy handle to connectdata" This reverts commit 56a4db2e4e2bcb9a0dcb75b83560a78ef231fcc8 (#12198) We want the c-ares channel to be he
Revert "urldata: move async resolver state from easy handle to connectdata" This reverts commit 56a4db2e4e2bcb9a0dcb75b83560a78ef231fcc8 (#12198) We want the c-ares channel to be held in the easy handle, not per connection - for performance. Closes #12524
show more ...
|
#
56a4db2e |
| 25-Oct-2023 |
Stefan Eissing |
urldata: move async resolver state from easy handle to connectdata - resolving is done for a connection, not for every transfer - save create/dup/free of a cares channel for each transfe
urldata: move async resolver state from easy handle to connectdata - resolving is done for a connection, not for every transfer - save create/dup/free of a cares channel for each transfer - check values of setopt calls against a local channel if no connection has been attached yet, when needed. Closes #12198
show more ...
|
#
43eb798d |
| 17-Oct-2023 |
Daniel Stenberg |
asyn-thread: use pipe instead of socketpair for IPC when available If pipe() is present. Less overhead. Helped-by: Viktor Szakats Closes #12146
|
#
d3142b57 |
| 01-Aug-2023 |
Daniel Stenberg |
resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not used, thus unnecessarily asking for addresses that
resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not used, thus unnecessarily asking for addresses that will not be used. Reported-by: Joseph Tharayil Fixes #11564 Closes #11565
show more ...
|
#
f198d33e |
| 18-May-2023 |
Emanuele Torre |
checksrc: disallow spaces before labels Out of 415 labels throughout the code base, 86 of those labels were not at the start of the line. Which means labels always at the start of th
checksrc: disallow spaces before labels Out of 415 labels throughout the code base, 86 of those labels were not at the start of the line. Which means labels always at the start of the line is the favoured style overall with 329 instances. Out of the 86 labels not at the start of the line: * 75 were indented with the same indentation level of the following line * 8 were indented with exactly one space * 2 were indented with one fewer indentation level then the following line * 1 was indented with the indentation level of the following line minus three space (probably unintentional) Co-Authored-By: Viktor Szakats Closes #11134
show more ...
|
#
2bc1d775 |
| 02-Jan-2023 |
Daniel Stenberg |
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - save
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - saves us from pointless churn - git keeps history for us - the year range is kept in COPYING checksrc is updated to allow non-year using copyright statements Closes #10205
show more ...
|
#
2d9fee45 |
| 23-Nov-2022 |
Daniel Gustafsson |
netware: remove leftover traces Commit 3b16575ae938dec2a29454631a12aa52b6ab9c67 removed support for building on Novell Netware, but a few leftover traces remained. This removes the l
netware: remove leftover traces Commit 3b16575ae938dec2a29454631a12aa52b6ab9c67 removed support for building on Novell Netware, but a few leftover traces remained. This removes the last bits. Closes: #9966 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
show more ...
|
#
49798cac |
| 12-Jul-2022 |
Alexandre Ferrieux |
CURLOPT_QUICK_EXIT: don't wait for DNS thread on exit Fixes #2975 Closes #9147
|
#
b563a92c |
| 01-Nov-2022 |
Viktor Szakats |
tidy-up: process.h detection and use This patch aims to cleanup the use of `process.h` header and the macro `HAVE_PROCESS_H` associated with it. - `process.h` is always availabl
tidy-up: process.h detection and use This patch aims to cleanup the use of `process.h` header and the macro `HAVE_PROCESS_H` associated with it. - `process.h` is always available on Windows. In curl, it is required only for `_beginthreadex()` in `lib/curl_threads.c`. - `process.h` is also available in MS-DOS. In curl, its only use was in `lib/smb.c` for `getpid()`. But `getpid()` is in fact declared by `unistd.h`, which is always enabled via `lib/config-dos.h`. So the header is not necessary. - `HAVE_PROCESS_H` was detected by CMake, forced to 1 on Windows and left to real detection for other platforms. It was also set to always-on in `lib/config-win32.h` and `lib/config-dos.h`. In autotools builds, there was no detection and the macro was never set. Based on these observations, in this patch we: - Rework Windows `getpid` logic in `lib/smb.c` to always use the equivalent direct Win32 API function `GetCurrentProcessId()`, as we already did for Windows UWP apps. This makes `process.h` unnecessary here on Windows. - Stop #including `process.h` into files where it was not necessary. This is everywhere, except `lib/curl_threads.c`. > Strangely enough, `lib/curl_threads.c` compiled fine with autotools > because `process.h` is also indirecty included via `unistd.h`. This > might have been broken in autotools MSVC builds, where the latter > header is missing. - Delete all remaining `HAVE_PROCESS_H` feature guards, for they were unnecessary. - Delete `HAVE_PROCESS_H` detection from CMake and predefined values from `lib/config-*.h` headers. Reviewed-by: Jay Satiro Closes #9703
show more ...
|
#
279834dd |
| 24-Oct-2022 |
Daniel Stenberg |
misc: remove duplicated include files Closes #9796
|
#
46f3fe0e |
| 21-Sep-2022 |
Daniel Stenberg |
hostip: lazily wait to figure out if IPv6 works until needed The check may take many milliseconds, so now it is performed once the value is first needed. Also, this change makes sure tha
hostip: lazily wait to figure out if IPv6 works until needed The check may take many milliseconds, so now it is performed once the value is first needed. Also, this change makes sure that the value is not used if the resolve is set to be IPv4-only. Closes #9553
show more ...
|
#
1902e8fc |
| 19-Sep-2022 |
Dmitry Karpov |
resolve: make forced IPv4 resolve only use A queries This protects IPv4-only transfers from undesired bad IPv6-related side effects and make IPv4 transfers in dual-stack libcurl behave t
resolve: make forced IPv4 resolve only use A queries This protects IPv4-only transfers from undesired bad IPv6-related side effects and make IPv4 transfers in dual-stack libcurl behave the same way as in IPv4 single-stack libcurl. Closes #9540
show more ...
|
#
f236595e |
| 14-Aug-2022 |
Daniel Stenberg |
asyn-thread: fix socket leak on OOM Closes #9310
|
#
451bcc1a |
| 12-Jul-2022 |
Daniel Stenberg |
asyn-thread: make getaddrinfo_complete return CURLcode ... as the only caller that cares about what it returns assumes that anyway. This caused icc to warn: asyn-thread.c(505):
asyn-thread: make getaddrinfo_complete return CURLcode ... as the only caller that cares about what it returns assumes that anyway. This caused icc to warn: asyn-thread.c(505): error #188: enumerated type mixed with another type result = getaddrinfo_complete(data); Repoorted-by: Matthew Thompson Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076 Closes #9146
show more ...
|
#
ad9bc597 |
| 17-May-2022 |
max.mehl |
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the file `.reuse/dep5`. This commit also adds a Github workflow to check pull requests and adapts copyright.pl to the changes. Closes #8869
show more ...
|
#
fe7b6422 |
| 08-Sep-2021 |
Daniel Stenberg |
strerror.h: remove the #include from files not using it
|
#
84d28397 |
| 24-Apr-2021 |
Lucas Clemente Vella |
CURLOPT_IPRESOLVE: preventing wrong IP version from being used In some situations, it was possible that a transfer was setup to use an specific IP version, but due do DNS caching or conn
CURLOPT_IPRESOLVE: preventing wrong IP version from being used In some situations, it was possible that a transfer was setup to use an specific IP version, but due do DNS caching or connection reuse, it ended up using a different IP version from requested. This commit changes the effect of CURLOPT_IPRESOLVE from simply restricting address resolution to preventing the wrong connection type being used, when choosing a connection from the pool, and to restricting what addresses could be used when establishing a new connection. It is important that all addresses versions are resolved, even if not used in that transfer in particular, because the result is cached, and could be useful for a different transfer with a different CURLOPT_IPRESOLVE setting. Closes #6853
show more ...
|
#
063d3f3b |
| 19-Apr-2021 |
Daniel Stenberg |
tidy-up: make conditional checks more consistent ... remove '== NULL' and '!= 0' Closes #6912
|
Revision tags: curl-7_76_1, curl-7_76_0 |
|
#
692faeab |
| 18-Feb-2021 |
Daniel Stenberg |
asyn-ares: use consistent resolve error message ... with the help of Curl_resolver_error() which now is moved from asyn-thead.c and is provided globally for this purpose. Follow
asyn-ares: use consistent resolve error message ... with the help of Curl_resolver_error() which now is moved from asyn-thead.c and is provided globally for this purpose. Follow-up to 35ca04ce1b77636 Makes test 1188 work for c-ares builds Closes #6626
show more ...
|