traversal: add systemd watchdog support

This commit is contained in:
Pierre Bourdon 2018-03-08 06:10:17 +00:00
parent f221fac02e
commit 9e0739f5e5
2 changed files with 17 additions and 1 deletions

View file

@ -131,6 +131,9 @@ endif()
if(UNIX)
# Posix networking code needs to be fixed for Windows
add_executable(traversal_server TraversalServer.cpp)
if(SYSTEMD_FOUND)
target_link_libraries(traversal_server ${SYSTEMD_LIBRARIES})
endif()
if(HAIKU)
target_link_libraries(traversal_server network)
endif()

View file

@ -15,10 +15,16 @@
#include <unordered_map>
#include <utility>
#include <vector>
#ifdef HAVE_LIBSYSTEMD
#include <systemd/sd-daemon.h>
#endif
#include "Common/TraversalProto.h"
#define DEBUG 0
#define NUMBER_OF_TRIES 5
#define PORT 6262
static u64 currentTime;
@ -397,7 +403,7 @@ int main()
addr.sin6_len = sizeof(addr);
#endif
addr.sin6_family = AF_INET6;
addr.sin6_port = htons(6262);
addr.sin6_port = htons(PORT);
addr.sin6_flowinfo = 0;
addr.sin6_addr = any;
addr.sin6_scope_id = 0;
@ -419,6 +425,10 @@ int main()
return 1;
}
#ifdef HAVE_LIBSYSTEMD
sd_notifyf(0, "READY=1\nSTATUS=Listening on port %d", PORT);
#endif
while (true)
{
sockaddr_in6 raddr;
@ -450,5 +460,8 @@ int main()
HandlePacket(&packet, &raddr);
}
ResendPackets();
#ifdef HAVE_LIBSYSTEMD
sd_notify(0, "WATCHDOG=1");
#endif
}
}