Skip to content
Snippets Groups Projects
Commit 6945e1a5 authored by Martin Karsten's avatar Martin Karsten
Browse files

- various clerical updates

- fix socket options in webserver - primarily for FreeBSD
parent da83c7a7
No related branches found
No related tags found
No related merge requests found
......@@ -59,7 +59,7 @@ public:
#endif
}
~BasePoller() {
close(pollFD);
SYSCALL(close(pollFD));
}
void pause() { paused = true; }
......@@ -154,7 +154,7 @@ public:
MasterPoller() : PollerThread("MasterPoller") {}
~MasterPoller() {
#if __linux__
close(timerFD);
SYSCALL(close(timerFD));
#endif
}
void start() { PollerThread::start(pollLoopSetup); }
......
......@@ -2,66 +2,68 @@
# echo add-auto-load-safe-path DIRECTORY >> $HOME/.gdbinit
# or load via 'source DIRECTORY/libfibre.so-gdb.py'
define hook-continue
# 'server' keyword disables confirmation dialog when re-loading/re-defining
server define hook-next
fibre reset
end
define hook-step
server define hook-nexti
fibre reset
end
define hook-stepi
server define hook-step
fibre reset
end
define hook-next
server define hook-stepi
fibre reset
end
define hook-nexti
server define hook-continue
fibre reset
end
define hook-advance
server define hook-finish
fibre reset
end
define hook-finish
server define hook-advance
fibre reset
end
define hook-jump
server define hook-jump
fibre reset
end
define hook-reverse-continue
server define hook-signal
fibre reset
end
define hook-reverse-finish
server define hook-until
fibre reset
end
define hook-reverse-next
server define hook-reverse-next
fibre reset
end
define hook-reverse-nexti
server define hook-reverse-nexti
fibre reset
end
define hook-reverse-step
server define hook-reverse-step
fibre reset
end
define hook-reverse-stepi
server define hook-reverse-stepi
fibre reset
end
define hook-signal
server define hook-reverse-continue
fibre reset
end
define hook-until
server define hook-reverse-finish
fibre reset
end
......@@ -290,24 +290,24 @@ static int create_socket(bool singleAccept = false) {
int on = 1;
SYSCALL(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void*)&on, sizeof(on)));
SYSCALL(setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (const void*)&on, sizeof(on)));
int qlen = 5; // for TCP_FASTOPEN below
#if __FreeBSD__
struct accept_filter_arg afa; // see 'man 9 accf_data'
bzero(&afa, sizeof(afa));
strcpy(afa.af_name, "dataready");
SYSCALL(setsockopt(fd, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa)));
SYSCALL(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (const void*)&on, sizeof(on)));
SYSCALL(setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, (const void*)&qlen, sizeof(qlen)));
sockaddr_in addr = { sizeof(sockaddr_in), AF_INET, htons(8800), { INADDR_ANY }, { 0 } };
#else
SYSCALL(setsockopt(fd, SOL_TCP, TCP_DEFER_ACCEPT, (const void*)&on, sizeof(on)));
SYSCALL(setsockopt(fd, SOL_TCP, TCP_NODELAY, (const void*)&on, sizeof(on)));
SYSCALL(setsockopt(fd, SOL_TCP, TCP_FASTOPEN, (const void*)&qlen, sizeof(qlen)));
int qlen = 5;
SYSCALL(setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, (const void*)&qlen, sizeof(qlen)));
SYSCALL(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (const void*)&on, sizeof(on)));
SYSCALL(setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, (const void*)&on, sizeof(on)));
sockaddr_in addr = { AF_INET, htons(8800), { INADDR_ANY }, { 0 } };
#endif
SYSCALL(lfBind(fd, (sockaddr*)&addr, sizeof(addr)));
if (singleAccept) SYSCALL(lfListen(fd, 0));
else SYSCALL(lfListen(fd, maxBacklog));
#if __FreeBSD__
struct accept_filter_arg afa; // see 'man 9 accf_data - set after 'listen'
bzero(&afa, sizeof(afa));
strcpy(afa.af_name, "dataready");
SYSCALL(setsockopt(fd, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa)));
#endif
return fd;
}
#endif
......@@ -330,6 +330,10 @@ static void acceptor(void* arg) {
uSocketAccept* connFD = new uSocketAccept(*servFD);
#else
uintptr_t connFD = lfAccept(servFD, nullptr, nullptr);
#if __FreeBSD__
int on = 1;
SYSCALL(setsockopt(connFD, IPPROTO_TCP, TCP_NODELAY, (const void*)&on, sizeof(on)));
#endif
#endif
if (!garage.run((void*)connFD)) {
__atomic_add_fetch(&connectionFibres, 1, __ATOMIC_RELAXED);
......@@ -354,6 +358,10 @@ static void acceptor_loop(void* arg) {
uSocketAccept* connFD = new uSocketAccept(*servFD);
#else
uintptr_t connFD = lfAccept(servFD, nullptr, nullptr);
#if __FreeBSD__
int on = 1;
SYSCALL(setsockopt(connFD, IPPROTO_TCP, TCP_NODELAY, (const void*)&on, sizeof(on)));
#endif
#endif
if (!garage.run((void*)arg)) {
__atomic_add_fetch(&connectionFibres, 1, __ATOMIC_RELAXED);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment