Improved the code quality and TeaSpeak now builds with clang
This commit is contained in:
+2
-1
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
project(TeaSpeak-Files)
|
||||
|
||||
#set(CMAKE_CXX_STANDARD 17)
|
||||
#set(CMAKE_CXX_STANDARD 20)
|
||||
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
add_library(TeaSpeak-FileServer STATIC
|
||||
@@ -27,6 +27,7 @@ target_link_libraries(TeaSpeak-FileServer PUBLIC TeaSpeak ${StringVariable_LIBRA
|
||||
|
||||
target_include_directories(TeaSpeak-FileServer PUBLIC include/)
|
||||
target_compile_options(TeaSpeak-FileServer PUBLIC "-Wswitch-enum")
|
||||
target_compile_features(TeaSpeak-FileServer PUBLIC cxx_std_20)
|
||||
|
||||
add_executable(TeaSpeak-FileServerTest test/main.cpp)
|
||||
target_link_libraries(TeaSpeak-FileServerTest PUBLIC TeaSpeak-FileServer
|
||||
|
||||
@@ -23,39 +23,39 @@ bool file::initialize(std::string &error, const std::string& hostnames, uint16_t
|
||||
|
||||
bool any_bind{false};
|
||||
for(const auto& binding : net::resolve_bindings(hostnames, port)) {
|
||||
if(!get<2>(binding).empty()) {
|
||||
logError(LOG_FT, "Failed to resolve binding for {}: {}", get<0>(binding), get<2>(binding));
|
||||
if(!std::get<2>(binding).empty()) {
|
||||
logError(LOG_FT, "Failed to resolve binding for {}: {}", std::get<0>(binding), std::get<2>(binding));
|
||||
continue;
|
||||
}
|
||||
|
||||
auto result = dynamic_cast<transfer::LocalFileTransfer&>(server_instance->file_transfer()).add_network_binding({ get<0>(binding), get<1>(binding) });
|
||||
auto result = dynamic_cast<transfer::LocalFileTransfer&>(server_instance->file_transfer()).add_network_binding({ std::get<0>(binding), std::get<1>(binding) });
|
||||
switch (result) {
|
||||
case transfer::NetworkingBindResult::SUCCESS:
|
||||
any_bind = true;
|
||||
break;
|
||||
|
||||
case transfer::NetworkingBindResult::OUT_OF_MEMORY:
|
||||
logWarning(LOG_FT, "Failed to listen to address {}: Out of memory", get<0>(binding));
|
||||
logWarning(LOG_FT, "Failed to listen to address {}: Out of memory", std::get<0>(binding));
|
||||
continue;
|
||||
|
||||
case transfer::NetworkingBindResult::FAILED_TO_LISTEN:
|
||||
logWarning(LOG_FT, "Failed to listen on {}: {}/{}", get<0>(binding), errno, strerror(errno));
|
||||
logWarning(LOG_FT, "Failed to listen on {}: {}/{}", std::get<0>(binding), errno, strerror(errno));
|
||||
continue;
|
||||
|
||||
case transfer::NetworkingBindResult::FAILED_TO_BIND:
|
||||
logWarning(LOG_FT, "Failed to bind on {}: {}/{}", get<0>(binding), errno, strerror(errno));
|
||||
logWarning(LOG_FT, "Failed to bind on {}: {}/{}", std::get<0>(binding), errno, strerror(errno));
|
||||
continue;
|
||||
|
||||
case transfer::NetworkingBindResult::BINDING_ALREADY_EXISTS:
|
||||
logWarning(LOG_FT, "Failed to bind on {}: binding already exists", get<0>(binding));
|
||||
logWarning(LOG_FT, "Failed to bind on {}: binding already exists", std::get<0>(binding));
|
||||
continue;
|
||||
|
||||
case transfer::NetworkingBindResult::NETWORKING_NOT_INITIALIZED:
|
||||
logWarning(LOG_FT, "Failed to bind on {}: networking not initialized", get<0>(binding));
|
||||
logWarning(LOG_FT, "Failed to bind on {}: networking not initialized", std::get<0>(binding));
|
||||
continue;
|
||||
|
||||
case transfer::NetworkingBindResult::FAILED_TO_ALLOCATE_SOCKET:
|
||||
logWarning(LOG_FT, "Failed to allocate a socket for {}: {}/{}", get<0>(binding), errno, strerror(errno));
|
||||
logWarning(LOG_FT, "Failed to allocate a socket for {}: {}/{}", std::get<0>(binding), errno, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
Submodule git-teaspeak updated: d09428739c...be995e99c4
@@ -422,7 +422,7 @@ namespace license {
|
||||
#ifdef GOOGLE_PROTOBUF_MESSAGE_H__
|
||||
packet(PacketType packetId, const ::google::protobuf::Message&);
|
||||
#endif
|
||||
packet(PacketType packetId, nullptr_t);
|
||||
packet(PacketType packetId, std::nullptr_t);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
Submodule rtclib updated: f8c063fbb5...fb969956df
@@ -355,7 +355,7 @@ target_link_libraries(Snapshots-Permissions-Test PUBLIC
|
||||
|
||||
#Require a so
|
||||
sqlite3
|
||||
DataPipes::rtc::shared
|
||||
DataPipes::core::static
|
||||
|
||||
tomcrypt::static
|
||||
tommath::static
|
||||
|
||||
+7
-3
@@ -1,5 +1,6 @@
|
||||
#include <dlfcn.h>
|
||||
#include <client/linux/handler/exception_handler.h>
|
||||
|
||||
//include <iterator> /* Required for breakpad */
|
||||
//#include <client/linux/handler/exception_handler.h>
|
||||
#include <iostream>
|
||||
#include <misc/strobf.h>
|
||||
#include <CXXTerminal/QuickTerminal.h>
|
||||
@@ -14,7 +15,10 @@
|
||||
#include "src/terminal/CommandHandler.h"
|
||||
#include "src/client/InternalClient.h"
|
||||
#include "src/SignalHandler.h"
|
||||
#include "src/build.h"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace std::chrono;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
#include <breakpad/client/linux/handler/exception_handler.h>
|
||||
#include "VirtualServer.h"
|
||||
#include "SignalHandler.h"
|
||||
#include "VirtualServerManager.h"
|
||||
@@ -10,15 +9,25 @@
|
||||
#include <experimental/filesystem>
|
||||
#include <src/terminal/PipedTerminal.h>
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#define BREAKPAD_EXCEPTION_HANDLER 1
|
||||
#ifdef BREAKPAD_EXCEPTION_HANDLER
|
||||
#include <breakpad/client/linux/handler/exception_handler.h>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
namespace fs = std::experimental::filesystem;
|
||||
|
||||
#ifdef BREAKPAD_EXCEPTION_HANDLER
|
||||
google_breakpad::ExceptionHandler* globalExceptionHandler = nullptr;
|
||||
#endif
|
||||
#define SIG(s, c) \
|
||||
if(signal(s, c) != nullptr) logError(LOG_GENERAL, "Cant setup signal handler for " #s);
|
||||
|
||||
|
||||
extern bool mainThreadDone;
|
||||
#ifdef BREAKPAD_EXCEPTION_HANDLER
|
||||
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded) {
|
||||
logCritical(LOG_GENERAL, "The server crashed!");
|
||||
try {
|
||||
@@ -41,6 +50,7 @@ static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
|
||||
logCritical(LOG_GENERAL, " Message: {}", ex.what());
|
||||
} catch(...) {}
|
||||
}
|
||||
|
||||
logCritical(LOG_GENERAL, "Please report this crash to the TeaSpeak maintainer WolverinDEV");
|
||||
logCritical(LOG_GENERAL, "Official issue and bug tracker url: https://github.com/TeaSpeak/TeaSpeak/issues");
|
||||
logCritical(LOG_GENERAL, "Any reports of crashes are useless if you not provide the above generated crashlog!");
|
||||
@@ -51,15 +61,20 @@ static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
|
||||
while(!mainThreadDone) threads::self::sleep_for(chrono::seconds(1));
|
||||
return succeeded;
|
||||
}
|
||||
#endif
|
||||
|
||||
std::atomic spawn_failed_count = 0;
|
||||
bool ts::syssignal::setup() {
|
||||
logMessage(LOG_GENERAL, "Setting up exception handler");
|
||||
#ifdef BREAKPAD_EXCEPTION_HANDLER
|
||||
globalExceptionHandler = new google_breakpad::ExceptionHandler(google_breakpad::MinidumpDescriptor("."), nullptr, dumpCallback, nullptr, true, -1);
|
||||
#endif
|
||||
|
||||
SIG(SIGTERM, &ts::syssignal::handleStopSignal);
|
||||
if(isatty(fileno(stdin))) //We cant listen for this signal if stdin ist a atty
|
||||
if(isatty(fileno(stdin))) {
|
||||
//We cant listen for this signal if stdin ist a atty
|
||||
SIG(SIGINT, &ts::syssignal::handleStopSignal);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#ifdef COMPILE_WEB_CLIENT
|
||||
#include <pipes/ssl.h>
|
||||
#include <pipes/ws.h>
|
||||
#include <pipes/rtc/PeerConnection.h>
|
||||
#include <src/client/SpeakingClient.h>
|
||||
#include <src/client/ConnectedClient.h>
|
||||
#include <protocol/buffers.h>
|
||||
|
||||
+1
-1
Submodule shared updated: 7b51bcc5e8...23db0edd22
Reference in New Issue
Block a user