mirror of https://github.com/getdnsapi/getdns.git
Enable TCP FastOpen by default and add support for OSX implementation of TFO.
This commit is contained in:
parent
145e6928bd
commit
736d9f20bf
46
configure.ac
46
configure.ac
|
@ -160,29 +160,31 @@ case "$enable_debug_sec" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
AC_ARG_ENABLE(tcp-fastopen, AC_HELP_STRING([--enable-tcp-fastopen], [Enable TCP Fast Open]))
|
# AC_ARG_ENABLE(tcp-fastopen, AC_HELP_STRING([--enable-tcp-fastopen], [Enable TCP Fast Open]))
|
||||||
case "$enable_tcp_fastopen" in
|
# case "$enable_tcp_fastopen" in
|
||||||
yes)
|
# yes)
|
||||||
AC_CHECK_DECL([MSG_FASTOPEN], [], [AC_MSG_ERROR([TCP Fast Open is not available: please rerun without --enable-tcp-fastopen])], [AC_INCLUDES_DEFAULT
|
# AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [], [AC_MSG_ERROR([TCP Fast Open is not available: please rerun without --enable-tcp-fastopen])], [AC_INCLUDES_DEFAULT
|
||||||
#include <sys/socket.h>
|
|
||||||
])
|
|
||||||
AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable TCP fast open.])
|
|
||||||
;;
|
|
||||||
no|*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Not yet enabled by default as crash found when TCP fails.
|
|
||||||
# AC_ARG_ENABLE(tcp-fastopen, AC_HELP_STRING([--disable-tcp-fastopen], Disable TCP Fast Open (default=enabled if available)),
|
|
||||||
# enable_tcp_fastopen="$enableval", enable_tcp_fastopen=yes)
|
|
||||||
# if test "x$enable_tcp_fastopen" = xno; then
|
|
||||||
# AC_MSG_WARN([TCP Fast Open is disabled])
|
|
||||||
# else
|
|
||||||
# AC_CHECK_DECL([MSG_FASTOPEN], [AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable TCP fast open.])],
|
|
||||||
# [AC_MSG_WARN([TCP Fast Open is not available.])], [AC_INCLUDES_DEFAULT
|
|
||||||
# #include <sys/socket.h>
|
# #include <sys/socket.h>
|
||||||
# ])
|
# ])
|
||||||
# fi
|
# AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable TCP fast open.])
|
||||||
|
# ;;
|
||||||
|
# no|*)
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(tcp-fastopen, AC_HELP_STRING([--disable-tcp-fastopen], Disable TCP Fast Open (default=enabled if available)),
|
||||||
|
enable_tcp_fastopen="$enableval", enable_tcp_fastopen=yes)
|
||||||
|
if test "x$enable_tcp_fastopen" = xno; then
|
||||||
|
AC_MSG_WARN([TCP Fast Open is disabled])
|
||||||
|
else
|
||||||
|
my_have_linux_tfo=1
|
||||||
|
AC_CHECK_DECL([MSG_FASTOPEN], [AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable TCP fast open.])],
|
||||||
|
my_have_linux_tfo=0, [#include <sys/socket.h>])
|
||||||
|
if test my_have_linux_tfo=0; then
|
||||||
|
AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_DEFINE_UNQUOTED([USE_OSX_TCP_FASTOPEN], [1], [Define this to enable TCP fast open.])],
|
||||||
|
[AC_MSG_WARN([TCP Fast Open is not available, continuing without])], [#include <sys/socket.h>])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(native-stub-dnssec, AC_HELP_STRING([--disable-native-stub-dnssec], [Disable native stub DNSSEC support]))
|
AC_ARG_ENABLE(native-stub-dnssec, AC_HELP_STRING([--disable-native-stub-dnssec], [Disable native stub DNSSEC support]))
|
||||||
case "$enable_native_stub_dnssec" in
|
case "$enable_native_stub_dnssec" in
|
||||||
|
|
16
src/stub.c
16
src/stub.c
|
@ -357,6 +357,22 @@ tcp_connect(getdns_upstream *upstream, getdns_transport_list_t transport)
|
||||||
if (transport == GETDNS_TRANSPORT_TCP ||
|
if (transport == GETDNS_TRANSPORT_TCP ||
|
||||||
transport == GETDNS_TRANSPORT_STARTTLS)
|
transport == GETDNS_TRANSPORT_STARTTLS)
|
||||||
return fd;
|
return fd;
|
||||||
|
#elif USE_OSX_TCP_FASTOPEN
|
||||||
|
sa_endpoints_t endpoints;
|
||||||
|
endpoints.sae_srcif = 0;
|
||||||
|
endpoints.sae_srcaddr = NULL;
|
||||||
|
endpoints.sae_srcaddrlen = 0;
|
||||||
|
endpoints.sae_dstaddr = (struct sockaddr *)&upstream->addr;
|
||||||
|
endpoints.sae_dstaddrlen = upstream->addr_len;
|
||||||
|
if (connectx(fd, &endpoints, SAE_ASSOCID_ANY,
|
||||||
|
CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE,
|
||||||
|
NULL, 0, NULL, NULL) == -1) {
|
||||||
|
if (errno != EINPROGRESS) {
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fd;
|
||||||
#endif
|
#endif
|
||||||
if (connect(fd, (struct sockaddr *)&upstream->addr,
|
if (connect(fd, (struct sockaddr *)&upstream->addr,
|
||||||
upstream->addr_len) == -1) {
|
upstream->addr_len) == -1) {
|
||||||
|
|
Loading…
Reference in New Issue