Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal / discussion: Build all of coturn as C++17, instead of C11. #1416

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/compiler-sanitizers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ jobs:
sanitizer: [ 'address,pointer-compare,pointer-subtract', 'thread' ]

env:
CFLAGS: "-fno-omit-frame-pointer -fstack-protector-all -fsanitize=${{matrix.sanitizer}},bounds,enum -fsanitize-address-use-after-scope -fsanitize-address-use-after-return=always -fsanitize-recover=address -fsanitize-memory-track-origins=2"
CC: "clang"
CXXFLAGS: "-fno-omit-frame-pointer -fstack-protector-all -fsanitize=${{matrix.sanitizer}},bounds,enum -fsanitize-address-use-after-scope -fsanitize-address-use-after-return=always -fsanitize-recover=address -fsanitize-memory-track-origins=2"
CXX: "clang"
ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:detect_leaks=0:detect_invalid_pointer_pairs=1:halt_on_error=0"

steps:
Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ cmake_minimum_required(VERSION 3.16)
project(coturn)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_EXTENSIONS ON)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
# TODO: Modify this when the version is released
Expand Down
22 changes: 11 additions & 11 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ LIBEVENT_INCLUDE = -I${PREFIX}/include/ -I/usr/local/include/

INCFLAGS = -Isrc -Isrc/apps/common -Isrc/server -Isrc/client -Isrc/client++ ${LIBEVENT_INCLUDE}

CFLAGS += ${INCFLAGS}
CXXFLAGS += ${INCFLAGS}

MAKE_DEPS = Makefile

Expand Down Expand Up @@ -60,37 +60,37 @@ include/turn/ns_turn_defs.h: src/ns_turn_defs.h

bin/turnutils_uclient: ${COMMON_DEPS} src/apps/uclient/session.h lib/libturnclient.a src/apps/uclient/mainuclient.c src/apps/uclient/uclient.c src/apps/uclient/uclient.h src/apps/uclient/startuclient.c src/apps/uclient/startuclient.h
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/uclient/uclient.c src/apps/uclient/startuclient.c src/apps/uclient/mainuclient.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/uclient/uclient.c src/apps/uclient/startuclient.c src/apps/uclient/mainuclient.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

bin/turnutils_natdiscovery: ${COMMON_DEPS} lib/libturnclient.a src/apps/natdiscovery/natdiscovery.c
pwd
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/natdiscovery/natdiscovery.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/natdiscovery/natdiscovery.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

bin/turnutils_oauth: ${COMMON_DEPS} lib/libturnclient.a src/apps/oauth/oauth.c
pwd
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/oauth/oauth.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/oauth/oauth.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

bin/turnutils_stunclient: ${COMMON_DEPS} lib/libturnclient.a src/apps/stunclient/stunclient.c
pwd
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/stunclient/stunclient.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/stunclient/stunclient.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

bin/turnutils_rfc5769check: ${COMMON_DEPS} lib/libturnclient.a src/apps/rfc5769/rfc5769check.c
pwd
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/rfc5769/rfc5769check.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/rfc5769/rfc5769check.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

bin/turnserver: ${SERVERAPP_DEPS}
${MKBUILDDIR} bin
${RMCMD} bin/turnadmin
${CC} ${CPPFLAGS} ${CFLAGS} ${DBCFLAGS} ${IMPL_MODS} -Ilib ${SERVERAPP_MODS} ${COMMON_MODS} ${SERVERTURN_MODS} -o $@ ${DBLIBS} ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} ${DBCFLAGS} ${IMPL_MODS} -Ilib ${SERVERAPP_MODS} ${COMMON_MODS} ${SERVERTURN_MODS} -o $@ ${DBLIBS} ${LDFLAGS}
cd bin; ln -s turnserver turnadmin

bin/turnutils_peer: ${COMMON_DEPS} ${LIBCLIENTTURN_MODS} ${LIBCLIENTTURN_DEPS} lib/libturnclient.a src/apps/peer/mainudpserver.c src/apps/peer/udpserver.h src/apps/peer/udpserver.c
${MKBUILDDIR} bin
${CC} ${CPPFLAGS} ${CFLAGS} src/apps/peer/mainudpserver.c src/apps/peer/udpserver.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}
${CXX} ${CPPFLAGS} ${CXXFLAGS} src/apps/peer/mainudpserver.c src/apps/peer/udpserver.c ${COMMON_MODS} -o $@ -Llib -lturnclient -Llib ${LDFLAGS}

### Client Library:

Expand All @@ -100,15 +100,15 @@ lib/libturnclient.a: ${LIBCLIENTTURN_OBJS} ${LIBCLIENTTURN_DEPS}

build/obj/ns_turn_ioaddr.o: src/client/ns_turn_ioaddr.c ${LIBCLIENTTURN_DEPS}
${MKBUILDDIR} build/obj
${CC} ${CPPFLAGS} ${CFLAGS} -c src/client/ns_turn_ioaddr.c -o $@
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c src/client/ns_turn_ioaddr.c -o $@

build/obj/ns_turn_msg_addr.o: src/client/ns_turn_msg_addr.c ${LIBCLIENTTURN_DEPS}
${MKBUILDDIR} build/obj
${CC} ${CPPFLAGS} ${CFLAGS} -c src/client/ns_turn_msg_addr.c -o $@
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c src/client/ns_turn_msg_addr.c -o $@

build/obj/ns_turn_msg.o: src/client/ns_turn_msg.c ${LIBCLIENTTURN_DEPS}
${MKBUILDDIR} build/obj
${CC} ${CPPFLAGS} ${CFLAGS} -c src/client/ns_turn_msg.c -o $@
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c src/client/ns_turn_msg.c -o $@

### Clean all:

Expand Down
62 changes: 31 additions & 31 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ cleanup() {
}

testlibraw() {
${CC} ${TMPCPROGC} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -${1} 2>>/dev/null
${CXX} ${TMPCPROGC} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -${1} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Library option -${1} cannot be used"
Expand Down Expand Up @@ -85,33 +85,33 @@ pthread_testlib() {
return
fi

${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
return
fi

${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
OSLIBS="${OSLIBS} -pthread"
return
fi

${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -lpthread 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -lpthread 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
OSLIBS="${OSLIBS} -lpthread"
return
fi

${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
return
fi

${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -D_GNU_SOURCE 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -D_GNU_SOURCE 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Older GNU pthread library found"
Expand All @@ -126,7 +126,7 @@ pthread_testlib() {
pthread_testbarriers() {

${ECHO_CMD} "pthread_barrier_t barrier;" >> ${TH_TMPCPROGC}
${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
${CXX} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "pthread barriers not found"
Expand All @@ -137,7 +137,7 @@ pthread_testbarriers() {
gcm_testlib() {

if [ -z "${TURN_NO_GCM}" ] ; then
${CC} ${GCM_TMPCPROGC} -o ${GCM_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
${CXX} ${GCM_TMPCPROGC} -o ${GCM_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
return 1
Expand All @@ -151,7 +151,7 @@ gcm_testlib() {

testdaemon() {

${CC} ${D_TMPCPROGC} -o ${D_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
${CXX} ${D_TMPCPROGC} -o ${D_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
OSCFLAGS="${OSCFLAGS} -DTURN_HAS_DAEMON"
Expand All @@ -160,13 +160,13 @@ testdaemon() {

test_sin_len() {
TMPCADDRPROGC=src/client/ns_turn_ioaddr.c
${CC} -c ${OSCFLAGS} -DTURN_HAS_SIN_LEN -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null
${CXX} -c ${OSCFLAGS} -DTURN_HAS_SIN_LEN -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
OSCFLAGS="${OSCFLAGS} -DTURN_HAS_SIN_LEN"
${ECHO_CMD} "Sockets code is fine: sin_len field present"
else
${CC} -c ${OSCFLAGS} -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null
${CXX} -c ${OSCFLAGS} -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Sockets code is fine: no sin_len field present"
Expand Down Expand Up @@ -420,7 +420,7 @@ if [ -z "${MORECMD}" ]; then
MORECMD="cat"
fi

OSCFLAGS="${CFLAGS}"
OSCFLAGS="${CXXFLAGS}"
OSLIBS="${LDFLAGS}"

SYSTEM=`uname`
Expand Down Expand Up @@ -592,36 +592,36 @@ int main(int argc, char** argv) {
# What is our compiler ?
##########################

if [ -z "${CC}" ] ; then
for CC in cc gcc clang; do
${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
if [ -z "${CXX}" ] ; then
for CXX in cxx c++ g++ clang++; do
${CXX} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
break
fi
CC=
CXX=
done

if [ -z "$CC" ] ; then
${ECHO_CMD} "ERROR: failed to a find working C compiler"
if [ -z "${CXX}" ] ; then
${ECHO_CMD} "ERROR: failed to a find a C++ compiler using the default search choices."
cleanup
exit 1
fi
else
CC_OUTPUT=$(${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB})
CXX_OUTPUT=$(${CXX} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB})
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly."
${ECHO_CMD} "${CC_OUTPUT}"
${ECHO_CMD} "ERROR: cannot use compiler ${CXX} properly."
${ECHO_CMD} "${CXX_OUTPUT}"
cleanup
exit 1
fi
fi

${ECHO_CMD} "Compiler: ${CC}"
${ECHO_CMD} "Compiler: ${CXX}"

if [ -z "${TURN_ACCEPT_RPATH}" ] ; then
${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} -Wl,-rpath,/usr/lib 2>>/dev/null
${CXX} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} -Wl,-rpath,/usr/lib 2>>/dev/null
ER=$?
if [ ${ER} -eq 0 ] ; then
TURN_ACCEPT_RPATH=1
Expand Down Expand Up @@ -664,23 +664,23 @@ GNUOSCFLAGS="-g ${GNUOSCFLAGS}"
GNUOSCFLAGS="${GNUOSCFLAGS} -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual"
GNUOSCFLAGS="${GNUOSCFLAGS}"

${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
${CXX} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Hm..."
${CC} -Wall ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
${CXX} -Wall ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Not an ordinary GNU or Clang compiler"
else
${ECHO_CMD} "g++ or something..."
GNUOSCFLAGS="-g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual"
${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
${CXX} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Not an ordinary g++ compiler"
GNUOSCFLAGS="-x c++ -g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual"
${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
${CXX} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Not an ordinary c++ compiler"
Expand Down Expand Up @@ -754,7 +754,7 @@ testdaemon
###########################

if [ -n "${SSL_CFLAGS}" ] && [ -n "${SSL_LIBS}" ]; then
${CC} ${TMPCPROGC} ${SSL_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${SSL_LIBS} 2>>/dev/null
${CXX} ${TMPCPROGC} ${SSL_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${SSL_LIBS} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Private SSL Library option cannot be used"
Expand Down Expand Up @@ -816,7 +816,7 @@ fi
# Test Libevent2 setup
###########################
if [ -n "${EVENT_CFLAGS}" ] && [ -n "${EVENT_LIBS}" ]; then
${CC} ${TMPCPROGC} ${EVENT_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${EVENT_LIBS} 2>>/dev/null
${CXX} ${TMPCPROGC} ${EVENT_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${EVENT_LIBS} 2>>/dev/null
ER=$?
if ! [ ${ER} -eq 0 ] ; then
${ECHO_CMD} "Private Event Library option cannot be used"
Expand Down Expand Up @@ -1049,10 +1049,10 @@ ${ECHO_CMD} "#################################" > Makefile
${ECHO_CMD} "# Generated by configure script #" >> Makefile
${ECHO_CMD} "#################################" >> Makefile
${ECHO_CMD} "ECHO_CMD = ${ECHO_CMD}" >> Makefile
${ECHO_CMD} "CC = ${CC}" >> Makefile
${ECHO_CMD} "CXX = ${CXX}" >> Makefile
${ECHO_CMD} "LDFLAGS += ${OSLIBS}" >> Makefile
${ECHO_CMD} "DBLIBS += ${DBLIBS}" >> Makefile
${ECHO_CMD} "CFLAGS += ${OSCFLAGS}" >> Makefile
${ECHO_CMD} "CXXFLAGS += ${OSCFLAGS}" >> Makefile
${ECHO_CMD} "CPPFLAGS = ${CPPFLAGS}" >> Makefile
${ECHO_CMD} "DBCFLAGS += ${DBCFLAGS} ${TURN_NO_PQ} ${TURN_NO_MYSQL} ${TURN_NO_SQLITE} ${TURN_NO_MONGO} ${TURN_NO_HIREDIS} ${TURN_NO_SYSTEMD}" >> Makefile
${ECHO_CMD} "#" >> Makefile
Expand Down
1 change: 1 addition & 0 deletions src/apps/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ set(SOURCE_FILES
ns_turn_utils.c
stun_buffer.c
)
set_source_files_properties(${SOURCE_FILES} PROPERIES LANGUAGE CXX)

set(HEADER_FILES
apputils.h
Expand Down
17 changes: 9 additions & 8 deletions src/apps/common/ns_turn_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ int turn_mutex_destroy(turn_mutex *mutex) {

/* syslog facility */
/*BVB-594 Syslog facility */
static char *str_fac[] = {"LOG_AUTH", "LOG_CRON", "LOG_DAEMON", "LOG_KERN", "LOG_LOCAL0",
"LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4", "LOG_LOCAL5",
"LOG_LOCAL6", "LOG_LOCAL7", "LOG_LPR", "LOG_MAIL", "LOG_NEWS",
"LOG_USER", "LOG_UUCP", "LOG_AUTHPRIV", "LOG_SYSLOG", 0};
static char const *const str_fac[] = {"LOG_AUTH", "LOG_CRON", "LOG_DAEMON", "LOG_KERN", "LOG_LOCAL0",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

undefined behavior to assign char* variables with string literals.

In both C and also C++.

Just C-language will let you do it anyway, and C++ won't (without a compiler flag that looks scary).

"LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4", "LOG_LOCAL5",
"LOG_LOCAL6", "LOG_LOCAL7", "LOG_LPR", "LOG_MAIL", "LOG_NEWS",
"LOG_USER", "LOG_UUCP", "LOG_AUTHPRIV", "LOG_SYSLOG", 0};

#if defined(__unix__) || defined(unix) || defined(__APPLE__)
static int int_fac[] = {LOG_AUTH, LOG_CRON, LOG_DAEMON, LOG_KERN, LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2,
LOG_LOCAL3, LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7, LOG_LPR, LOG_MAIL,
LOG_NEWS, LOG_USER, LOG_UUCP, LOG_AUTHPRIV, LOG_SYSLOG, 0};
static int const int_fac[] = {LOG_AUTH, LOG_CRON, LOG_DAEMON, LOG_KERN, LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2,
LOG_LOCAL3, LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7, LOG_LPR, LOG_MAIL,
LOG_NEWS, LOG_USER, LOG_UUCP, LOG_AUTHPRIV, LOG_SYSLOG, 0};

static int syslog_facility = 0;

Expand Down Expand Up @@ -541,7 +541,8 @@ void err(int eval, const char *format, ...) {
}
#endif

void turn_log_func_default(char *file, int line, TURN_LOG_LEVEL level, const char *format, ...) {
void turn_log_func_default(char const *const file, int const line, TURN_LOG_LEVEL const level, char const *const format,
...) {
va_list args;
va_start(args, format);
#if defined(TURN_LOG_FUNC_IMPL)
Expand Down
17 changes: 12 additions & 5 deletions src/apps/common/ns_turn_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ void err(int eval, const char *format, ...);
#include "ns_turn_defs.h" // for turn_time_t
#include "ns_turn_ioaddr.h"

#ifdef __cplusplus
#include <algorithm> // for std::min
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -72,7 +76,7 @@ void set_syslog_facility(char *val);

void set_turn_log_timestamp_format(char *new_format);

void turn_log_func_default(char *file, int line, TURN_LOG_LEVEL level, const char *format, ...)
void turn_log_func_default(char const *file, int line, TURN_LOG_LEVEL level, const char *format, ...)
#ifdef __GNUC__
__attribute__((format(printf, 4, 5)))
#endif
Expand All @@ -97,12 +101,15 @@ int is_secure_string(const uint8_t *string, int sanitizesql);

///////////////////////////////////////////////////////

#if !defined(min)
#define min(a, b) ((a) <= (b) ? (a) : (b))
#endif

#ifdef __cplusplus
}
#endif

// Make sure that we don't try to pull std::min into the extern-c block.
#if defined(__cplusplus)
using std::min;
#elif !defined(min)
#define min(a, b) ((a) <= (b) ? (a) : (b))
#endif

#endif //__TURN_ULIB__
3 changes: 2 additions & 1 deletion src/apps/natdiscovery/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ project(turnutils_natdiscovery)
set(SOURCE_FILES
natdiscovery.c
)
set_source_files_properties(${SOURCE_FILES} PROPERIES LANGUAGE CXX)

add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
)
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
Expand Down