s.setNonBlocking();
ComboAddress local = pdns::getQueryLocalAddress(ip.sin4.sin_family, 0);
if (SyncRes::s_tcp_fast_open > 0) {
- s.setFastOpen(SyncRes::s_tcp_fast_open);
+ s.setFastOpenConnect();
}
s.bind(local);
if (SyncRes::s_tcp_fast_open > 0) {
#ifdef TCP_FASTOPEN
- if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, &SyncRes::tcp_fast_open, sizeof SyncRes::tcp_fast_open) < 0) {
+ if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, &SyncRes::s_tcp_fast_open, sizeof SyncRes::s_tcp_fast_open) < 0) {
int err = errno;
g_log<<Logger::Error<<"Failed to enable TCP Fast Open for listening socket: "<<strerror(err)<<endl;
}
{
cerr << "sdig" << endl;
cerr << "Syntax: sdig IP-ADDRESS-OR-DOH-URL PORT QNAME QTYPE "
+<<<<<<< HEAD
"[dnssec] [ednssubnet SUBNET/MASK] [hidesoadetails] [hidettl] [recurse] [showflags] "
"[tcp] [dot] [insecure] [fastOpen] [subjectName name] [caStore file] [tlsProvider openssl|gnutls] "
"[xpf XPFDATA] [class CLASSNUM] "
+=======
+ "[dnssec] [ednssubnet SUBNET/MASK] [hidesoadetails] [hidettl] "
+ "[recurse] [showflags] [tcp] [fastopen] [xpf XPFDATA] [class CLASSNUM] "
+>>>>>>> 5b8fccd32 (sdig now works with fastopen)
"[proxy UDP(0)/TCP(1) SOURCE-IP-ADDRESS-AND-PORT DESTINATION-IP-ADDRESS-AND-PORT]"
"dumpluaraw"
<< endl;
bool dnssec = false;
bool recurse = false;
bool tcp = false;
+ bool fastopen = false;
bool showflags = false;
bool hidesoadetails = false;
bool doh = false;
hidettl = true;
else if (strcmp(argv[i], "tcp") == 0)
tcp = true;
+<<<<<<< HEAD
else if (strcmp(argv[i], "dot") == 0)
dot = true;
else if (strcmp(argv[i], "insecure") == 0)
else if (strcmp(argv[i], "fastOpen") == 0)
fastOpen = true;
else if (strcmp(argv[i], "ednssubnet") == 0) {
+=======
+ if (strcmp(argv[i], "fastopen") == 0)
+ fastopen = true;
+ if (strcmp(argv[i], "ednssubnet") == 0) {
+>>>>>>> 5b8fccd32 (sdig now works with fastopen)
if (argc < i + 2) {
cerr << "ednssubnet needs an argument" << endl;
exit(EXIT_FAILURE);
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <sys/select.h>
#include <fcntl.h>
}
}
- void setFastOpen(int fastOpenQueueSize)
+ void setFastOpenConnect()
{
#ifdef TCP_FASTOPEN_CONNECT
- setsockopt(d_socket, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &fastOpenQueueSize, sizeof fastOpenQueueSize);
+ int on = 1;
+ if (setsockopt(d_socket, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &on, sizeof(on)) < 0)
+ throw NetworkError("While setting TCP_FASTOPEN_CONNECT: " + stringerror());
#endif
}