Skip to content

Commit

Permalink
[libcurl] Disable signals and use c-ares as DNS resolver backend
Browse files Browse the repository at this point in the history
  • Loading branch information
Kartatz committed Sep 25, 2023
1 parent 6e43840 commit bdbf55b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@
[submodule "submodules/cabundle"]
path = submodules/cabundle
url = https://github.com/AmanoTeam/CABundle
[submodule "submodules/c-ares"]
path = submodules/c-ares
url = https://github.com/c-ares/c-ares
19 changes: 14 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ set(CURL_USE_BEARSSL OFF)
set(CURL_USE_OPENSSL ON)
set(USE_NGHTTP2 ON)
set(CURL_BROTLI ON)
set(ENABLE_ARES ON)
set(CURL_USE_LIBPSL OFF)
set(CURL_DISABLE_ALTSVC ON)
set(CURL_DISABLE_CRYPTO_AUTH ON)
Expand Down Expand Up @@ -126,6 +127,14 @@ set(BROTLI_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/submodules/brotli/c/include"
set(BROTLICOMMON_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}brotlicommon${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(BROTLIDEC_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}brotlidec${CMAKE_SHARED_LIBRARY_SUFFIX}")

set(
CARES_INCLUDE_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/submodules/c-ares/include"
"${CMAKE_CURRENT_BINARY_DIR}/submodules/c-ares"
)

set(CARES_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}cares${CMAKE_SHARED_LIBRARY_SUFFIX}")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)

if (ANDROID)
Expand All @@ -137,11 +146,12 @@ add_subdirectory(submodules/zlib EXCLUDE_FROM_ALL)
add_subdirectory(submodules/boringssl EXCLUDE_FROM_ALL)
add_subdirectory(submodules/nghttp2 EXCLUDE_FROM_ALL)
add_subdirectory(submodules/brotli EXCLUDE_FROM_ALL)
add_subdirectory(submodules/c-ares EXCLUDE_FROM_ALL)

file(REMOVE "${OPENSSL_SSL_LIBRARY}")
file(REMOVE "${OPENSSL_CRYPTO_LIBRARY}")

foreach(target zlib crypto ssl nghttp2 brotlidec)
foreach(target zlib crypto ssl nghttp2 brotlidec c-ares)
add_custom_command(
OUTPUT ${target}
COMMAND ${CMAKE_COMMAND} --build ./ --target ${target}
Expand Down Expand Up @@ -471,7 +481,7 @@ if (HAIKU)
endif()

foreach(property RUNTIME_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY)
foreach(target libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec)
foreach(target libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec c-ares)
set_target_properties(
${target}
PROPERTIES
Expand Down Expand Up @@ -516,7 +526,7 @@ if (KAD_ENABLE_LTO)
check_ipo_supported(RESULT KAD_HAS_LTO LANGUAGES C)

if (KAD_HAS_LTO)
foreach(target kad bearssl libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec)
foreach(target kad bearssl libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec c-ares)
set_target_properties(
${target}
PROPERTIES
Expand Down Expand Up @@ -570,7 +580,7 @@ target_link_libraries(
libcurl
)

foreach(target kad bearssl libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec)
foreach(target kad bearssl libcurl zlib crypto ssl nghttp2 brotlicommon brotlidec c-ares)
install(
TARGETS ${target}
RUNTIME DESTINATION bin
Expand Down Expand Up @@ -617,6 +627,5 @@ if (CMAKE_CROSSCOMPILING)
BEFORE
PRIVATE
-Wl,-rpath-link -Wl,${CMAKE_CURRENT_BINARY_DIR}
# -Wl,-rpath-link -Wl,${CMAKE_FIND_ROOT_PATH}/lib -Wl,-rpath-link -Wl,${CMAKE_FIND_ROOT_PATH}/lib64
)
endif()
4 changes: 4 additions & 0 deletions src/proxy.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,10 @@ static int request_handler(void* pointer) {
return KADERR_CURL_SETOPT_FAILURE;
}

if (curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L) != CURLE_OK) {
return KADERR_CURL_SETOPT_FAILURE;
}

struct curl_slist* list __curl_slist_free_all__ = NULL;

for (size_t index = 0; index < request.headers.offset; index++) {
Expand Down
1 change: 1 addition & 0 deletions submodules/c-ares
Submodule c-ares added at 7f3262

0 comments on commit bdbf55b

Please sign in to comment.