Skip to content

Commit

Permalink
Merge branch 'master' of github.com:sctplab/usrsctp
Browse files Browse the repository at this point in the history
  • Loading branch information
tuexen committed Mar 16, 2020
2 parents 0c9e649 + d520eaf commit 5e46735
Show file tree
Hide file tree
Showing 123 changed files with 155 additions and 155 deletions.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,9 @@ elseif (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "Appl
endif ()

if (sctp_build_fuzzer)
set(CMAKE_BUILD_TYPE "DEBUG")
add_definitions(-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=fuzzer-no-link")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O1 -fsanitize=fuzzer-no-link")
endif ()
endif ()

Expand Down
Binary file added fuzzer/CORPUS_CONNECT/addip-000000
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000001
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000002
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000003
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000004
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000005
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000006
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000007
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000008
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000009
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000010
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/addip-000011
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/dummy-01
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000000
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000001
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000002
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000003
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000004
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000005
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000006
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000007
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000008
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000009
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000010
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000011
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000012
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000013
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000014
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000015
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000016
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000017
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/rtcweb-000018
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000019
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000020
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000021
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000022
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000023
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000024
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000025
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000026
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000027
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/rtcweb-000028
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000000
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000001
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000002
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000004
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000005
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000006
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000007
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000008
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000009
Binary file not shown.
Binary file modified fuzzer/CORPUS_CONNECT/tsctp-000010
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000011
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000012
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000013
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000014
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000015
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000016
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000017
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000020
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000021
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000022
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000024
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000025
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000026
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000027
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000028
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000029
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000030
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000031
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000032
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000033
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000034
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000035
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000036
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000037
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000038
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000039
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000040
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000041
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000042
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000043
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000044
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000045
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000046
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000047
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000048
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000049
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000050
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000051
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000052
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000053
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000054
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000055
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000056
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000057
Binary file not shown.
Binary file removed fuzzer/CORPUS_CONNECT/tsctp-000058
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000000
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000001
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000002
Binary file not shown.
File renamed without changes.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000004
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000005
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000006
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000007
Binary file not shown.
Binary file added fuzzer/CORPUS_CONNECT/tsctp-i-data-000008
Binary file not shown.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions fuzzer/build-fuzzer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ pwd
find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete

# Build with ASAN / MSAN
cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_address=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=Debug .
#cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_memory=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_address=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" .
#cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_memory=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" .

make -j"$NPROC"
2 changes: 1 addition & 1 deletion fuzzer/check-input.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ echo "########## Beginning Fuzzer Chain"
echo ""

set +e
./fuzzer_connect_multi_verbose -timeout=30 $1 > $1.log 2>&1
./fuzzer_connect_multi_verbose -timeout=10 $1 > $1.log 2>&1
FUZZER_RETVAL=$?
set -e

Expand Down
1 change: 0 additions & 1 deletion fuzzer/crashtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import re

reportdir = "reports/"
fuzzer = "./fuzzer_connect_multi"

class bcolors:
HEADER = '\033[95m'
Expand Down
222 changes: 96 additions & 126 deletions fuzzer/fuzzer_connect.c

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions fuzzer/fuzzer_connect_multi.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

export ASAN_OPTIONS=abort_on_error=1:disable_core=0:unmap_shadow_on_exit=1:disable_coredump=0:detect_leaks=1
#export ASAN_OPTIONS=abort_on_error=1:disable_core=0:unmap_shadow_on_exit=1:disable_coredump=0:detect_leaks=1
ulimit -c unlimited
mkdir -p CORPUS_CONNECT

Expand All @@ -19,4 +19,4 @@ fi
echo "$NPROC"


./fuzzer_connect_multi -jobs=64 -timeout=10 -max_len=32000 CORPUS_CONNECT
./fuzzer_connect_multi -jobs=64 -timeout=10 -max_len=32000 -use_value_profile=1 CORPUS_CONNECT
16 changes: 15 additions & 1 deletion programs/programs_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,24 @@ void
debug_printf_stack(const char *format, ...)
{
va_list ap;
char charbuf[1024];
static struct timeval time_main;
struct timeval time_now;
struct timeval time_delta;

if (time_main.tv_sec == 0 && time_main.tv_usec == 0) {
gettimeofday(&time_main, NULL);
}

gettimeofday(&time_now, NULL);
timersub(&time_now, &time_main, &time_delta);

va_start(ap, format);
vprintf(format, ap);
//vfprintf(stderr, format, ap);
vsnprintf(charbuf, 1024, format, ap);
va_end(ap);

fprintf(stderr, "[S][%u.%03u] %s", (unsigned int) time_delta.tv_sec, (unsigned int) time_delta.tv_usec / 1000, charbuf);
}

static void
Expand Down
12 changes: 9 additions & 3 deletions usrsctplib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ set(includedir ${prefix}/include/usrsctp)
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_MACOSX_RPATH 1)

include(CheckCCompilerFlag)

add_definitions(-D__Userspace__)
add_definitions(-D__Userspace_os_${CMAKE_SYSTEM_NAME})
add_definitions(-DSCTP_SIMPLE_ALLOCATOR)
Expand All @@ -53,11 +55,16 @@ add_definitions(-DSCTP_PROCESS_LEVEL_LOCKS)
# OS DEPENDENT
#################################################

check_c_compiler_flag(-Wno-address-of-packed-member has_wno_address_of_packet_member)
if (has_wno_address_of_packet_member)
check_c_compiler_flag(-Wno-address-of-packed-member has_wno_address_of_packed_member)
if (has_wno_address_of_packed_member)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-address-of-packed-member")
endif ()

check_c_compiler_flag(-Wno-deprecated-declarations has_wno_deprecated_declarations)
if (has_wno_deprecated_declarations)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
endif ()

if (CMAKE_SYSTEM_NAME MATCHES "Linux")
add_definitions(-D_GNU_SOURCE)
endif ()
Expand All @@ -69,7 +76,6 @@ endif ()
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_definitions(-U__APPLE__)
add_definitions(-D__APPLE_USE_RFC_2292)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
endif ()

if (CMAKE_SYSTEM_NAME MATCHES "DragonFly")
Expand Down
10 changes: 5 additions & 5 deletions usrsctplib/netinet/sctp_auth.c
Original file line number Diff line number Diff line change
Expand Up @@ -1650,6 +1650,11 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth,
"SCTP AUTH Chunk: shared key %u, HMAC id %u\n",
shared_key_id, hmac_id);

#if defined(__Userspace__)
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
return (0);
#endif
#endif
/* is the indicated HMAC supported? */
if (!sctp_auth_is_supported_hmac(stcb->asoc.local_hmacs, hmac_id)) {
struct mbuf *op_err;
Expand Down Expand Up @@ -1730,11 +1735,6 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth,
(void)sctp_compute_hmac_m(hmac_id, stcb->asoc.authinfo.recv_key,
m, offset, computed_digest);

#if defined(__Userspace__)
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
return (0);
#endif
#endif
/* compare the computed digest with the one in the AUTH chunk */
if (timingsafe_bcmp(digest, computed_digest, digestlen) != 0) {
SCTP_STAT_INCR(sctps_recvauthfailed);
Expand Down
2 changes: 2 additions & 0 deletions usrsctplib/netinet/sctp_bsd_addr.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ sctp_startup_iterator(void)
#elif defined(__Userspace__)
if (sctp_userspace_thread_create(&sctp_it_ctl.thread_proc, &sctp_iterator_thread)) {
SCTP_PRINTF("ERROR: Creating sctp_iterator_thread failed.\n");
} else {
SCTP_BASE_VAR(iterator_thread_started) = 1;
}
#endif
}
Expand Down
2 changes: 2 additions & 0 deletions usrsctplib/netinet/sctp_callout.c
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@ sctp_start_timer(void)
rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(timer_thread), user_sctp_timer_iterate);
if (rc) {
SCTP_PRINTF("ERROR; return code from sctp_thread_create() is %d\n", rc);
} else {
SCTP_BASE_VAR(timer_thread_started) = 1;
}
}

Expand Down
15 changes: 7 additions & 8 deletions usrsctplib/netinet/sctp_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

#ifdef __FreeBSD__
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: head/sys/netinet/sctp_constants.h 357500 2020-02-04 12:34:16Z tuexen $");
__FBSDID("$FreeBSD: head/sys/netinet/sctp_constants.h 358169 2020-02-20 15:37:44Z tuexen $");
#endif

#ifndef _NETINET_SCTP_CONSTANTS_H_
Expand Down Expand Up @@ -551,14 +551,13 @@ extern void getwintimeofday(struct timeval *tv);
#define SCTP_TIMER_TYPE_ASCONF 10
#define SCTP_TIMER_TYPE_SHUTDOWNGUARD 11
#define SCTP_TIMER_TYPE_AUTOCLOSE 12
#define SCTP_TIMER_TYPE_EVENTWAKE 13
#define SCTP_TIMER_TYPE_STRRESET 14
#define SCTP_TIMER_TYPE_INPKILL 15
#define SCTP_TIMER_TYPE_ASOCKILL 16
#define SCTP_TIMER_TYPE_ADDR_WQ 17
#define SCTP_TIMER_TYPE_PRIM_DELETED 18
#define SCTP_TIMER_TYPE_STRRESET 13
#define SCTP_TIMER_TYPE_INPKILL 14
#define SCTP_TIMER_TYPE_ASOCKILL 15
#define SCTP_TIMER_TYPE_ADDR_WQ 16
#define SCTP_TIMER_TYPE_PRIM_DELETED 17
/* add new timers here - and increment LAST */
#define SCTP_TIMER_TYPE_LAST 19
#define SCTP_TIMER_TYPE_LAST 18

#define SCTP_IS_TIMER_TYPE_VALID(t) (((t) > SCTP_TIMER_TYPE_NONE) && \
((t) < SCTP_TIMER_TYPE_LAST))
Expand Down
2 changes: 1 addition & 1 deletion usrsctplib/netinet/sctp_pcb.c
Original file line number Diff line number Diff line change
Expand Up @@ -6871,7 +6871,7 @@ sctp_pcb_finish(void)
}
#endif
#if defined(__Userspace__)
if (sctp_it_ctl.thread_proc) {
if (SCTP_BASE_VAR(iterator_thread_started)) {
#if defined(__Userspace_os_Windows)
WaitForSingleObject(sctp_it_ctl.thread_proc, INFINITE);
CloseHandle(sctp_it_ctl.thread_proc);
Expand Down
2 changes: 2 additions & 0 deletions usrsctplib/netinet/sctp_pcb.h
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,8 @@ struct sctp_base_info {
userland_mutex_t timer_mtx;
userland_thread_t timer_thread;
int timer_thread_should_exit;
int iterator_thread_started;
int timer_thread_started;
#if !defined(__Userspace_os_Windows)
pthread_mutexattr_t mtx_attr;
#if defined(INET) || defined(INET6)
Expand Down
13 changes: 9 additions & 4 deletions usrsctplib/netinet/sctp_usrreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,14 @@ sctp_init(void)
SCTP_BASE_VAR(conn_output) = conn_output;
SCTP_BASE_VAR(debug_printf) = debug_printf;
SCTP_BASE_VAR(crc32c_offloaded) = 0;
SCTP_BASE_VAR(iterator_thread_started) = 0;
SCTP_BASE_VAR(timer_thread_started) = 0;
#endif
#if defined(__Userspace__)
sctp_pcb_init(start_threads);
if (start_threads)
if (start_threads) {
sctp_start_timer();
}
#else
sctp_pcb_init();
#endif
Expand Down Expand Up @@ -252,12 +255,14 @@ sctp_finish(void)
}
#endif
atomic_cmpset_int(&SCTP_BASE_VAR(timer_thread_should_exit), 0, 1);
if (SCTP_BASE_VAR(timer_thread_started)) {
#if defined(__Userspace_os_Windows)
WaitForSingleObject(SCTP_BASE_VAR(timer_thread), INFINITE);
CloseHandle(SCTP_BASE_VAR(timer_thread));
WaitForSingleObject(SCTP_BASE_VAR(timer_thread), INFINITE);
CloseHandle(SCTP_BASE_VAR(timer_thread));
#else
pthread_join(SCTP_BASE_VAR(timer_thread), NULL);
pthread_join(SCTP_BASE_VAR(timer_thread), NULL);
#endif
}
#endif
sctp_pcb_finish();
#if defined(__Windows__)
Expand Down

0 comments on commit 5e46735

Please sign in to comment.