diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c4bf449
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# build
+build/**
+docker/xml/demo_server.xml
+docker/xml/*.xml
+CMakeFiles/**
+CMakeCache.txt
+cmake_install.cmake
+Makefile
+.vscode/**
+
+## testing result
+/load_test/*.json
+/load_test/*.pjsua
diff --git a/.gitmodules b/.gitmodules
index 9008cdf..9afd760 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,4 @@
[submodule "pjproject"]
path = pjproject
- url = https://github.com/jchavanton/pjproject.git
+ url = https://github.com/pjsip/pjproject
+ branch = master
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..525b819
--- /dev/null
+++ b/.vscode/c_cpp_properties.json
@@ -0,0 +1,24 @@
+{
+ "configurations": [
+ {
+ "name": "Mac",
+ "includePath": [
+ "${workspaceFolder}/**",
+ "${workspaceFolder}/pjproject/pjlib/include",
+ "${workspaceFolder}/pjproject/pjlib-util/include",
+ "/Users/ntuan1/vcpkg/installed/arm64-osx/include/openssl",
+ "/Users/ntuan1/vcpkg/installed/arm64-osx/include"
+ ],
+ "defines": [],
+ "macFrameworkPath": [
+ "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
+ ],
+ "compilerPath": "/usr/bin/clang",
+ "cStandard": "c17",
+ "cppStandard": "c++17",
+ "intelliSenseMode": "macos-clang-arm64",
+ "configurationProvider": "ms-vscode.cmake-tools"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..126e892
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "files.associations": {
+ "rsa.h": "c",
+ "err.h": "c",
+ "bn.h": "c"
+ },
+ "cmake.cmakePath": "/opt/homebrew/bin/cmake"
+}
\ No newline at end of file
diff --git a/CMakeCache.txt b/CMakeCache.txt
new file mode 100644
index 0000000..1a45d54
--- /dev/null
+++ b/CMakeCache.txt
@@ -0,0 +1,495 @@
+# This is the CMakeCache file.
+# For build in directory: /home/azureuser/voip_patrol
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//A wrapper around 'ar' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11
+
+//A wrapper around 'ranlib' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11
+
+//Flags used by the CXX compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the CXX compiler during DEBUG builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the CXX compiler during MINSIZEREL builds.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the CXX compiler during RELEASE builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the CXX compiler during RELWITHDEBINFO builds.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
+
+//A wrapper around 'ar' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11
+
+//A wrapper around 'ranlib' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11
+
+//Flags used by the C compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the C compiler during DEBUG builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the C compiler during RELEASE builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker during all build types.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake
+
+//Flags used by the linker during the creation of modules during
+// all build types.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=voip_patrol
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION:STATIC=1.0.0
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_MAJOR:STATIC=1
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_MINOR:STATIC=0
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_PATCH:STATIC=0
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_TWEAK:STATIC=
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/usr/bin/readelf
+
+//Flags used by the linker during the creation of shared libraries
+// during all build types.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Arguments to supply to pkg-config
+PKG_CONFIG_ARGN:STRING=
+
+//pkg-config executable
+PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config
+
+//Path to a library.
+pkgcfg_lib_OPENSSL_crypto:FILEPATH=/usr/lib/x86_64-linux-gnu/libcrypto.so
+
+//Path to a library.
+pkgcfg_lib_OPENSSL_ssl:FILEPATH=/usr/lib/x86_64-linux-gnu/libssl.so
+
+//Value Computed by CMake
+voip_patrol_BINARY_DIR:STATIC=/home/azureuser/voip_patrol
+
+//Value Computed by CMake
+voip_patrol_IS_TOP_LEVEL:STATIC=ON
+
+//Value Computed by CMake
+voip_patrol_SOURCE_DIR:STATIC=/home/azureuser/voip_patrol
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/azureuser/voip_patrol
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=22
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
+CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
+CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/home/azureuser/voip_patrol
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.22
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Details about finding PkgConfig
+FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-config][v0.29.2()]
+OPENSSL_CFLAGS:INTERNAL=
+OPENSSL_CFLAGS_I:INTERNAL=
+OPENSSL_CFLAGS_OTHER:INTERNAL=
+OPENSSL_FOUND:INTERNAL=1
+OPENSSL_INCLUDEDIR:INTERNAL=/usr/include
+OPENSSL_INCLUDE_DIRS:INTERNAL=
+OPENSSL_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu;-lssl;-lcrypto
+OPENSSL_LDFLAGS_OTHER:INTERNAL=
+OPENSSL_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu
+OPENSSL_LIBRARIES:INTERNAL=ssl;crypto
+OPENSSL_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu
+OPENSSL_LIBS:INTERNAL=
+OPENSSL_LIBS_L:INTERNAL=
+OPENSSL_LIBS_OTHER:INTERNAL=
+OPENSSL_LIBS_PATHS:INTERNAL=
+OPENSSL_MODULE_NAME:INTERNAL=openssl
+OPENSSL_PREFIX:INTERNAL=/usr
+OPENSSL_STATIC_CFLAGS:INTERNAL=
+OPENSSL_STATIC_CFLAGS_I:INTERNAL=
+OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL=
+OPENSSL_STATIC_INCLUDE_DIRS:INTERNAL=
+OPENSSL_STATIC_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu;-lssl;-lcrypto;-ldl;-pthread
+OPENSSL_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread
+OPENSSL_STATIC_LIBDIR:INTERNAL=
+OPENSSL_STATIC_LIBRARIES:INTERNAL=ssl;crypto;dl
+OPENSSL_STATIC_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu
+OPENSSL_STATIC_LIBS:INTERNAL=
+OPENSSL_STATIC_LIBS_L:INTERNAL=
+OPENSSL_STATIC_LIBS_OTHER:INTERNAL=
+OPENSSL_STATIC_LIBS_PATHS:INTERNAL=
+OPENSSL_VERSION:INTERNAL=3.0.2
+OPENSSL_openssl_INCLUDEDIR:INTERNAL=
+OPENSSL_openssl_LIBDIR:INTERNAL=
+OPENSSL_openssl_PREFIX:INTERNAL=
+OPENSSL_openssl_VERSION:INTERNAL=
+OPUS_CFLAGS:INTERNAL=
+OPUS_CFLAGS_I:INTERNAL=
+OPUS_CFLAGS_OTHER:INTERNAL=
+OPUS_FOUND:INTERNAL=
+OPUS_INCLUDEDIR:INTERNAL=
+OPUS_LIBDIR:INTERNAL=
+OPUS_LIBS:INTERNAL=
+OPUS_LIBS_L:INTERNAL=
+OPUS_LIBS_OTHER:INTERNAL=
+OPUS_LIBS_PATHS:INTERNAL=
+OPUS_MODULE_NAME:INTERNAL=
+OPUS_PREFIX:INTERNAL=
+OPUS_STATIC_CFLAGS:INTERNAL=
+OPUS_STATIC_CFLAGS_I:INTERNAL=
+OPUS_STATIC_CFLAGS_OTHER:INTERNAL=
+OPUS_STATIC_LIBDIR:INTERNAL=
+OPUS_STATIC_LIBS:INTERNAL=
+OPUS_STATIC_LIBS_L:INTERNAL=
+OPUS_STATIC_LIBS_OTHER:INTERNAL=
+OPUS_STATIC_LIBS_PATHS:INTERNAL=
+OPUS_VERSION:INTERNAL=
+OPUS_opus_INCLUDEDIR:INTERNAL=
+OPUS_opus_LIBDIR:INTERNAL=
+OPUS_opus_PREFIX:INTERNAL=
+OPUS_opus_VERSION:INTERNAL=
+//ADVANCED property for variable: PKG_CONFIG_ARGN
+PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE
+PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1
+UUID_CFLAGS:INTERNAL=
+UUID_CFLAGS_I:INTERNAL=
+UUID_CFLAGS_OTHER:INTERNAL=
+UUID_FOUND:INTERNAL=
+UUID_INCLUDEDIR:INTERNAL=
+UUID_LIBDIR:INTERNAL=
+UUID_LIBS:INTERNAL=
+UUID_LIBS_L:INTERNAL=
+UUID_LIBS_OTHER:INTERNAL=
+UUID_LIBS_PATHS:INTERNAL=
+UUID_MODULE_NAME:INTERNAL=
+UUID_PREFIX:INTERNAL=
+UUID_STATIC_CFLAGS:INTERNAL=
+UUID_STATIC_CFLAGS_I:INTERNAL=
+UUID_STATIC_CFLAGS_OTHER:INTERNAL=
+UUID_STATIC_LIBDIR:INTERNAL=
+UUID_STATIC_LIBS:INTERNAL=
+UUID_STATIC_LIBS_L:INTERNAL=
+UUID_STATIC_LIBS_OTHER:INTERNAL=
+UUID_STATIC_LIBS_PATHS:INTERNAL=
+UUID_VERSION:INTERNAL=
+UUID_uuid_INCLUDEDIR:INTERNAL=
+UUID_uuid_LIBDIR:INTERNAL=
+UUID_uuid_PREFIX:INTERNAL=
+UUID_uuid_VERSION:INTERNAL=
+__pkg_config_checked_OPENSSL:INTERNAL=1
+__pkg_config_checked_OPUS:INTERNAL=1
+__pkg_config_checked_UUID:INTERNAL=1
+//ADVANCED property for variable: pkgcfg_lib_OPENSSL_crypto
+pkgcfg_lib_OPENSSL_crypto-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: pkgcfg_lib_OPENSSL_ssl
+pkgcfg_lib_OPENSSL_ssl-ADVANCED:INTERNAL=1
+prefix_result:INTERNAL=/usr/lib/x86_64-linux-gnu
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 316181f..353500b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.2)
project(voip_patrol VERSION 1.0.0 LANGUAGES C CXX)
set(CMAKE_VERBOSE_MAKEFILE ON)
+set(CMAKE_MACOSX_BUNDLE ON)
+
message("CMAKE_SYSTEM_PROCESSOR:${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM:${CMAKE_SYSTEM} CMAKE_BUILD_TYPE:${CMAKE_BUILD_TYPE} OV:${OV}")
@@ -47,7 +49,8 @@ set(CMAKE_LIBRARY_PATH
"${ROOT_DIR}/pjproject/pjlib-util/lib"
)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -g")
+#set(AC_SYSTEM "arm-apple-darwin")
execute_process(COMMAND "./pjproject/config.guess" OUTPUT_VARIABLE AC_SYSTEM)
string(STRIP ${AC_SYSTEM} AC_SYSTEM)
@@ -77,7 +80,7 @@ target_link_libraries(voip_patrol
m
asound
ssl
- -std=c++11
+ -std=c++17
)
find_package(PkgConfig REQUIRED)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..bfcda0f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,292 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Produce verbose output by default.
+VERBOSE = 1
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/azureuser/voip_patrol
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/azureuser/voip_patrol
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/azureuser/voip_patrol/CMakeFiles /home/azureuser/voip_patrol//CMakeFiles/progress.marks
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/azureuser/voip_patrol/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named voip_patrol
+
+# Build rule for target.
+voip_patrol: cmake_check_build_system
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 voip_patrol
+.PHONY : voip_patrol
+
+# fast build rule for target.
+voip_patrol/fast:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/build
+.PHONY : voip_patrol/fast
+
+src/ezxml/ezxml.o: src/ezxml/ezxml.c.o
+.PHONY : src/ezxml/ezxml.o
+
+# target to build an object file
+src/ezxml/ezxml.c.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/ezxml/ezxml.c.o
+.PHONY : src/ezxml/ezxml.c.o
+
+src/ezxml/ezxml.i: src/ezxml/ezxml.c.i
+.PHONY : src/ezxml/ezxml.i
+
+# target to preprocess a source file
+src/ezxml/ezxml.c.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/ezxml/ezxml.c.i
+.PHONY : src/ezxml/ezxml.c.i
+
+src/ezxml/ezxml.s: src/ezxml/ezxml.c.s
+.PHONY : src/ezxml/ezxml.s
+
+# target to generate assembly for a file
+src/ezxml/ezxml.c.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/ezxml/ezxml.c.s
+.PHONY : src/ezxml/ezxml.c.s
+
+src/voip_patrol/action.o: src/voip_patrol/action.cc.o
+.PHONY : src/voip_patrol/action.o
+
+# target to build an object file
+src/voip_patrol/action.cc.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/action.cc.o
+.PHONY : src/voip_patrol/action.cc.o
+
+src/voip_patrol/action.i: src/voip_patrol/action.cc.i
+.PHONY : src/voip_patrol/action.i
+
+# target to preprocess a source file
+src/voip_patrol/action.cc.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/action.cc.i
+.PHONY : src/voip_patrol/action.cc.i
+
+src/voip_patrol/action.s: src/voip_patrol/action.cc.s
+.PHONY : src/voip_patrol/action.s
+
+# target to generate assembly for a file
+src/voip_patrol/action.cc.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/action.cc.s
+.PHONY : src/voip_patrol/action.cc.s
+
+src/voip_patrol/check.o: src/voip_patrol/check.cc.o
+.PHONY : src/voip_patrol/check.o
+
+# target to build an object file
+src/voip_patrol/check.cc.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/check.cc.o
+.PHONY : src/voip_patrol/check.cc.o
+
+src/voip_patrol/check.i: src/voip_patrol/check.cc.i
+.PHONY : src/voip_patrol/check.i
+
+# target to preprocess a source file
+src/voip_patrol/check.cc.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/check.cc.i
+.PHONY : src/voip_patrol/check.cc.i
+
+src/voip_patrol/check.s: src/voip_patrol/check.cc.s
+.PHONY : src/voip_patrol/check.s
+
+# target to generate assembly for a file
+src/voip_patrol/check.cc.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/check.cc.s
+.PHONY : src/voip_patrol/check.cc.s
+
+src/voip_patrol/mod_voip_patrol.o: src/voip_patrol/mod_voip_patrol.cc.o
+.PHONY : src/voip_patrol/mod_voip_patrol.o
+
+# target to build an object file
+src/voip_patrol/mod_voip_patrol.cc.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/mod_voip_patrol.cc.o
+.PHONY : src/voip_patrol/mod_voip_patrol.cc.o
+
+src/voip_patrol/mod_voip_patrol.i: src/voip_patrol/mod_voip_patrol.cc.i
+.PHONY : src/voip_patrol/mod_voip_patrol.i
+
+# target to preprocess a source file
+src/voip_patrol/mod_voip_patrol.cc.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/mod_voip_patrol.cc.i
+.PHONY : src/voip_patrol/mod_voip_patrol.cc.i
+
+src/voip_patrol/mod_voip_patrol.s: src/voip_patrol/mod_voip_patrol.cc.s
+.PHONY : src/voip_patrol/mod_voip_patrol.s
+
+# target to generate assembly for a file
+src/voip_patrol/mod_voip_patrol.cc.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/mod_voip_patrol.cc.s
+.PHONY : src/voip_patrol/mod_voip_patrol.cc.s
+
+src/voip_patrol/voip_patrol.o: src/voip_patrol/voip_patrol.cc.o
+.PHONY : src/voip_patrol/voip_patrol.o
+
+# target to build an object file
+src/voip_patrol/voip_patrol.cc.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/voip_patrol.cc.o
+.PHONY : src/voip_patrol/voip_patrol.cc.o
+
+src/voip_patrol/voip_patrol.i: src/voip_patrol/voip_patrol.cc.i
+.PHONY : src/voip_patrol/voip_patrol.i
+
+# target to preprocess a source file
+src/voip_patrol/voip_patrol.cc.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/voip_patrol.cc.i
+.PHONY : src/voip_patrol/voip_patrol.cc.i
+
+src/voip_patrol/voip_patrol.s: src/voip_patrol/voip_patrol.cc.s
+.PHONY : src/voip_patrol/voip_patrol.s
+
+# target to generate assembly for a file
+src/voip_patrol/voip_patrol.cc.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/voip_patrol.dir/build.make CMakeFiles/voip_patrol.dir/src/voip_patrol/voip_patrol.cc.s
+.PHONY : src/voip_patrol/voip_patrol.cc.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... rebuild_cache"
+ @echo "... voip_patrol"
+ @echo "... src/ezxml/ezxml.o"
+ @echo "... src/ezxml/ezxml.i"
+ @echo "... src/ezxml/ezxml.s"
+ @echo "... src/voip_patrol/action.o"
+ @echo "... src/voip_patrol/action.i"
+ @echo "... src/voip_patrol/action.s"
+ @echo "... src/voip_patrol/check.o"
+ @echo "... src/voip_patrol/check.i"
+ @echo "... src/voip_patrol/check.s"
+ @echo "... src/voip_patrol/mod_voip_patrol.o"
+ @echo "... src/voip_patrol/mod_voip_patrol.i"
+ @echo "... src/voip_patrol/mod_voip_patrol.s"
+ @echo "... src/voip_patrol/voip_patrol.o"
+ @echo "... src/voip_patrol/voip_patrol.i"
+ @echo "... src/voip_patrol/voip_patrol.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/QUICK_START.md b/QUICK_START.md
index 3ca103a..1eb6711 100644
--- a/QUICK_START.md
+++ b/QUICK_START.md
@@ -37,3 +37,14 @@ docker logs voip_patrol
XML_CONF[basic_server.xml] RESULT FILE[result.json] PORT[5060]
Running /git/voip_patrol/voip_patrol --port 5060 --conf /xml/basic_server.xml --output /output/result.json
```
+
+
+### run command manually
+
+Start simple UDP server listen on 5060
+
+`./voip_patrol --ip-addr 20.110.145.242 --port 5060 --rtp-port 20000-40000 --conf xml/basic_server.xml --output /home/azureuser/output/result.json & `
+
+do the test sip call to server was initialized
+
+`VP_ENV_SERVER="172.190.226.226:45070" VP_ENV_CALLEE="12542724631@172.190.226.226" VP_ENV_U=12542724631 bash -c "sleep 0 && ./voip_patrol -p 32527 -c conf.xml -o perf1.json --ip-addr 20.110.145.242 --rtp-port 40257"`
\ No newline at end of file
diff --git a/cmake_install.cmake b/cmake_install.cmake
new file mode 100644
index 0000000..0d9bdfc
--- /dev/null
+++ b/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /home/azureuser/voip_patrol
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "1")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/usr/bin/objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/home/azureuser/voip_patrol/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/conf.xml b/conf.xml
index 63cb931..e231f8a 100644
--- a/conf.xml
+++ b/conf.xml
@@ -6,63 +6,60 @@
-->
-
+
+
+
+
+
+
+
+
-
+
+
+
+
-
+
diff --git a/conf.xml.tpl b/conf.xml.tpl
new file mode 100644
index 0000000..95bb9e2
--- /dev/null
+++ b/conf.xml.tpl
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 4df2731..6cf3f46 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -21,5 +21,6 @@ RUN mkdir /xml
RUN mkdir /output
COPY xml/basic_server.xml /xml
+COPY xml/demo_server.xml /xml
COPY entry.sh /
ENTRYPOINT ["/entry.sh"]
diff --git a/docker/Dockerfile.arm b/docker/Dockerfile.arm
new file mode 100644
index 0000000..1117387
--- /dev/null
+++ b/docker/Dockerfile.arm
@@ -0,0 +1,30 @@
+#FROM python:3.11.4-bullseye
+#FROM arm64v8/python:3.7-slim-buster
+#FROM arm64v8/python:3.7.17-buster
+FROM arm64v8/python:3.11-bookworm
+
+ARG VERSION="feature/mac"
+
+RUN echo "installing dependencies" \
+ && apt-get update && apt-get install -y build-essential libcurl4-openssl-dev cmake pkg-config libasound2-dev \
+ && apt-get -y install libssl-dev git
+
+RUN echo "building VoIP Patrol" \
+ && mkdir /git && cd /git && git clone https://github.com/kevinnguyenai/voip_patrol.git \
+ && cd voip_patrol && git checkout ${VERSION} \
+ && git submodule update --init \
+ && cp include/config_site_arm.h pjproject/pjlib/include/pj/config_site.h \
+ #&& ./configure --host=arm-apple-darwin --disable-libwebrtc --disable-opencore-amr && make dep && make
+ && cd pjproject && ./configure --host=aarch64-linux-gnu --disable-libwebrtc --disable-opencore-amr --disable-video \
+ && make dep && make && make install \
+ && cd .. && cmake CMakeLists.txt && make
+
+RUN ln -s /git/voip_patrol/voice_ref_files /voice_ref_files
+
+RUN mkdir /xml
+RUN mkdir /output
+
+COPY xml/basic_server.xml /xml
+COPY xml/demo_server.xml /xml
+COPY entry.sh /
+ENTRYPOINT ["/entry.sh"]
diff --git a/docker/build_image.sh b/docker/build_image.sh
index b2b3351..a5fdd52 100755
--- a/docker/build_image.sh
+++ b/docker/build_image.sh
@@ -1,7 +1,8 @@
#!/bin/sh
TAG="0.4.0"
-docker build . --no-cache -t voip_patrol
-docker tag voip_patrol:latest jchavanton/voip_patrol:latest
-docker tag voip_patrol:latest jchavanton/voip_patrol:${TAG}
+PLATFORM="linux/amd64"
+docker build . --no-cache --platform ${PLATFORM} -t voip_patrol
+docker tag voip_patrol:latest ocpasia/voip_patrol:latest
+docker tag voip_patrol:latest ocpasia/voip_patrol:${TAG}
echo "Don't forget to push !"
-echo "docker push jchavanton/voip_patrol:latest && docker push jchavanton/voip_patrol:${TAG}"
+echo "docker tag voip_patrol:latest ocpasia/voip_patrol:latest && docker push ocpasia/voip_patrol:latest && docker push ocpasia/voip_patrol:${TAG}"
diff --git a/docker/build_image_arm.sh b/docker/build_image_arm.sh
new file mode 100755
index 0000000..08d52f0
--- /dev/null
+++ b/docker/build_image_arm.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+TAG="0.4.0"
+PLATFORM="linux/arm64"
+docker build -f Dockerfile.arm . --no-cache --platform ${PLATFORM} -t voip_patrol
+docker tag voip_patrol_arm:latest ocpasia/voip_patrol_arm:latest
+docker tag voip_patrol_arm:latest ocpasia/voip_patrol_arm:${TAG}
+echo "Don't forget to push !"
+echo "docker tag voip_patrol_arm:latest ocpasia/voip_patrol_arm:latest && docker push ocpasia/voip_patrol_arm:latest && docker push ocpasia/voip_patrol_arm:${TAG}"
diff --git a/docker/entry.sh b/docker/entry.sh
index eb4fef3..295ab99 100755
--- a/docker/entry.sh
+++ b/docker/entry.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-XML_CONF=${XML_CONF-"basic_server.xml"}
+XML_CONF=${XML_CONF-"demo_server.xml"}
RESULT_FILE=${RESULT_FILE-"result.json"}
PORT=${PORT="5060"}
diff --git a/docker/voip_patrol_demo.sh b/docker/voip_patrol_demo.sh
new file mode 100755
index 0000000..494790e
--- /dev/null
+++ b/docker/voip_patrol_demo.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+DIR_PREFIX=`pwd`
+IMAGE=voip_patrol:latest
+docker stop voip_patrol
+docker rm voip_patrol
+docker run -d --net=host --name=voip_patrol --volume $DIR_PREFIX/../xml:/xml \
+ $IMAGE \
+ ./git/voip_patrol/voip_patrol -p 5555 -c /xml/demo_server.xml -l /log/voip_patrol.log -o result.json
+# /bin/sh -c "tail -f /dev/null"
diff --git a/docker/xml/demo_server.xml b/docker/xml/demo_server.xml
new file mode 100644
index 0000000..dac6145
--- /dev/null
+++ b/docker/xml/demo_server.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/config_site.h b/include/config_site.h
index 36e364f..0ee3209 100644
--- a/include/config_site.h
+++ b/include/config_site.h
@@ -17,3 +17,4 @@
#define PJMEDIA_SRTP_HAS_DTLS 1
// Make send of "100 - Trying" explicit
#define PJSUA_DISABLE_AUTO_SEND_100 1
+
diff --git a/include/config_site_arm.h b/include/config_site_arm.h
new file mode 100644
index 0000000..b9a5504
--- /dev/null
+++ b/include/config_site_arm.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2023 Kevin Nguyen
+//
+// This software is released under the MIT License.
+// https://opensource.org/licenses/MIT
+
+#define PJ_IOQUEUE_MAX_HANDLES 1024
+#define FD_SETSIZE_SETABLE 1
+#define __FD_SETSIZE 1024
+
+#define PJSIP_MAX_TRANSPORTS 32
+#define PJSIP_MAX_RESOLVED_ADDRESSES 32
+
+#define PJSUA_MAX_ACC 512
+#define PJSUA_MAX_CALLS 512
+#define PJSUA_MAX_PLAYERS 512
+
+// SSL
+#define PJ_HAS_SSL_SOCK 1
+#define PJ_SSL_SOCK_IMP PJ_SSL_SOCK_IMP_APPLE
+
+#define PJSUA_DISABLE_AUTO_SEND_100 1
+// ARM
+//#define ARM 1
+#define PJ_HAS_PENTIUM 0
+#define PJ_IS_LITTLE_ENDIAN 1
+#define PJ_IS_BIG_ENDIAN 0
diff --git a/include/user.mak b/include/user.mak
new file mode 100644
index 0000000..37a1c50
--- /dev/null
+++ b/include/user.mak
@@ -0,0 +1,4 @@
+# You can create user.mak file in PJ root directory to specify
+# additional flags to compiler and linker. For example:
+# export CFLAGS += -Wno-unused-label -Werror
+export LDFLAGS += -framework Network -framework Security
\ No newline at end of file
diff --git a/load_test/LOAD_TEST.md b/load_test/LOAD_TEST.md
index 70f3ac0..2e924f1 100644
--- a/load_test/LOAD_TEST.md
+++ b/load_test/LOAD_TEST.md
@@ -28,3 +28,8 @@ In the provided example scenario, each voip_patrol instance will do 100 calls an
repeat=99"
/>
```
+
+
+## EXAMPLE
+
+`$ VP_ENV_SERVER="172.190.226.226:5060" VP_ENV_CALLEE="12542724631@172.190.226.226:5060" VP_ENV_U=12542724613 bash -c "sleep 0 && ../voip_patrol -p 52744 -c sbc_load.xml -o perf1.json --rtp-port 10010" `
\ No newline at end of file
diff --git a/load_test/Untitled-1 b/load_test/Untitled-1
new file mode 100644
index 0000000..e11caec
--- /dev/null
+++ b/load_test/Untitled-1
@@ -0,0 +1,41 @@
+sipexer --tls-insecure \
+--invite \
+-co -com \
+-contact-uri "sip:gw+5d63ac1c732ae67118724e3c_sbc_0@20.189.120.18:45061;transport=tls;gw=5d63ac1c732ae67118724e3c_sbc_0" \
+-to-uri "sip:+17634965976@40.88.197.74:45091;transport=tls" \
+-from-uri "sip:+17047650477@20.189.120.18" \
+-xh "Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY" \
+-xh "Content-Type: application/sdp" \
+-xh "X-Lxp-CallSid: CA479900399475872406126b39f7649ca8" \
+-mb " \
+v=0
+o=LeapXpert 1693933974 1693933975 IN IP4 20.189.120.18
+s=LeapXpert
+c=IN IP4 20.189.120.18
+t=0 0
+m=audio 52900 RTP/SAVP 102 8 0 103 101
+a=rtpmap:102 opus/48000/2
+a=fmtp:102 useinbandfec=1; usedtx=1; maxaveragebitrate=64000; maxplaybackrate=48000; sprop-maxcapturerate=48000; ptime=20; minptime=10; maxptime=40
+a=rtpmap:8 PCMA/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:103 telephone-event/48000
+a=fmtp:103 0-15
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+a=crypto:10 AES_CM_128_HMAC_SHA1_32 inline:+miB1El9i7DqEZYDm99evrM5V/3+PKfW3utopUlT
+a=crypto:7 AES_CM_128_HMAC_SHA1_80 inline:oDmDi/jR+od4yUe+5Bd71k+4Q39qD92wZeJ9yF5e
+a=silenceSupp:off - - - -
+a=ptime:20
+m=audio 52900 RTP/AVP 102 8 0 103 101
+a=rtpmap:102 opus/48000/2
+a=fmtp:102 useinbandfec=1; usedtx=1; maxaveragebitrate=64000; maxplaybackrate=48000; sprop-maxcapturerate=48000; ptime=20; minptime=10; maxptime=40
+a=rtpmap:8 PCMA/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:103 telephone-event/48000
+a=fmtp:103 0-15
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+a=silenceSupp:off - - - -
+a=ptime:20
+" \
+"sip:+17634965976@40.88.197.74:45061;transport=tls"
\ No newline at end of file
diff --git a/load_test/core b/load_test/core
new file mode 100644
index 0000000..99268af
Binary files /dev/null and b/load_test/core differ
diff --git a/load_test/load.xml b/load_test/load.xml
index 6b61eae..72945db 100644
--- a/load_test/load.xml
+++ b/load_test/load.xml
@@ -9,24 +9,26 @@
max_duration="20" hangup="20"
code="200" reason="OK"
rtp_stats="true"
- play="../voice_ref_files/reference_8000.wav"
+ play="../voice_ref_files/reference_8000.wav"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pjproject b/pjproject
index f2bc60a..b3ca3b5 160000
--- a/pjproject
+++ b/pjproject
@@ -1 +1 @@
-Subproject commit f2bc60ac38ce0f6c4e4a86f35ba62e71167998ef
+Subproject commit b3ca3b50e125f29706f151410273045b557417e7
diff --git a/results.json b/results.json
new file mode 100644
index 0000000..ff1d46e
--- /dev/null
+++ b/results.json
@@ -0,0 +1,2 @@
+{"1": {"label": "", "start": "24-07-2023 13:01:22", "end": "24-07-2023 13:01:22", "action": "register", "from": "demo_000001", "to": "demo_000001", "result": "PASS", "expected_cause_code": 200, "cause_code": 200, "reason": "OK", "callid": "", "transport": "UDP", "peer_socket": "", "duration": 0, "expected_duration": 0, "max_duration": 0, "hangup_duration": 0, "call_info":{"local_uri": "", "remote_uri": "", "local_contact": "", "remote_contact": "" }}}
+{"1": {"label": "server1", "start": "06-02-2024 08:51:27", "end": "06-02-2024 08:51:27", "action": "call", "from": "Anonymous", "to": "12542724613", "result": "FAIL", "expected_cause_code": 200, "cause_code": 500, "reason": "Server Internal Error", "callid": "IFsKpTuo3UkoaVW8nP7Q7EwTya7c8Ild", "transport": "", "peer_socket": "", "duration": 0, "expected_duration": 0, "max_duration": 0, "hangup_duration": 2, "call_info":{"local_uri": "sip:Anonymous@20.110.145.242;transport=", "remote_uri": "sip:12542724613@172.190.226.226:35080", "local_contact": "", "remote_contact": "" }}}
diff --git a/results.json.pjsua b/results.json.pjsua
new file mode 100644
index 0000000..4d049af
--- /dev/null
+++ b/results.json.pjsua
@@ -0,0 +1,712 @@
+08:51:26.847 sip_endpoint.c .Module "mod-pjsua-log" registered
+08:51:26.847 sip_endpoint.c .Module "mod-tsx-layer" registered
+08:51:26.847 sip_endpoint.c .Module "mod-stateful-util" registered
+08:51:26.847 sip_endpoint.c .Module "mod-ua" registered
+08:51:26.847 sip_endpoint.c .Module "mod-100rel" registered
+08:51:26.847 sip_endpoint.c .Module "mod-pjsua" registered
+08:51:26.847 sip_endpoint.c .Module "mod-invite" registered
+08:51:26.850 alsa_dev.c ..ALSA driver found 0 devices
+08:51:26.850 alsa_dev.c ..ALSA initialized
+08:51:26.854 pjlib ..select() I/O Queue created (0x563538f5d728)
+08:51:26.854 conference.c ..Creating conference bridge with 514 ports
+08:51:26.854 Master/sound ..Using delay buffer with WSOLA.
+08:51:27.048 DTLS-SRTP ..:AES_CM_128_HMAC_SHA1_80:AES_CM_128_HMAC_SHA1_32:AEAD_AES_256_GCM:AEAD_AES_128_GCM profile is supported
+08:51:27.048 sip_endpoint.c .Module "mod-evsub" registered
+08:51:27.048 sip_endpoint.c .Module "mod-presence" registered
+08:51:27.048 evsub.c .Event pkg "presence" registered by mod-presence
+08:51:27.048 sip_endpoint.c .Module "mod-mwi" registered
+08:51:27.048 evsub.c .Event pkg "message-summary" registered by mod-mwi
+08:51:27.048 sip_endpoint.c .Module "mod-refer" registered
+08:51:27.048 evsub.c .Event pkg "refer" registered by mod-refer
+08:51:27.048 sip_endpoint.c .Module "mod-pjsua-pres" registered
+08:51:27.048 sip_endpoint.c .Module "mod-pjsua-im" registered
+08:51:27.048 sip_endpoint.c .Module "mod-pjsua-options" registered
+08:51:27.048 pjsua_core.c .1 SIP worker threads created
+08:51:27.048 pjsua_core.c .pjsua version 2.10-dev for Linux-6.2.3.248/x86_64/glibc-2.35 initialized
+08:51:27.048 pjsua_core.c .PJSUA state changed: CREATED --> INIT
+08:51:27.049 pjsua_core.c SIP UDP socket reachable at 10.9.16.116:5070
+08:51:27.049 udp0x563538ff4b40 SIP UDP transport started, published address is 10.9.16.116:5070
+08:51:27.049 tcptp:5070 SIP TCP listener ready for incoming connections at 10.9.16.116:5070
+08:51:27.049 tlstp:5071 SIP TLS listener is ready for incoming connections at 10.9.16.116:5071
+08:51:27.049 pjsua_aud.c Setting null sound device..
+08:51:27.049 pjsua_aud.c .Opening null sound device..
+08:51:27.049 pjsua_core.c PJSUA state changed: INIT --> STARTING
+08:51:27.049 sip_endpoint.c .Module "mod-unsolicited-mwi" registered
+08:51:27.049 pjsua_core.c .PJSUA state changed: STARTING --> RUNNING
+08:51:27.049 pjsua_acc.c Adding account: id=sip:default
+08:51:27.049 pjsua_acc.c .Account sip:default added with id 0
+08:51:27.050 pjsua_acc.c Adding account: id=sip:Anonymous@20.110.145.242;transport=
+08:51:27.050 pjsua_acc.c .Account sip:Anonymous@20.110.145.242;transport= added with id 1
+08:51:27.050 pjsua_call.c Making call with acc #1 to sip:12542724613@172.190.226.226:35080
+08:51:27.050 dlg0x5635390bbf78 .UAC dialog created
+08:51:27.050 dlg0x5635390bbf78 ..Session count inc to 2 by mod-pjsua
+08:51:27.050 pjsua_media.c .Call 0: initializing media..
+08:51:27.050 pjsua_media.c ..RTP socket reachable at 10.9.16.116:4000
+08:51:27.050 pjsua_media.c ..RTCP socket reachable at 10.9.16.116:4001
+08:51:27.050 srtp0x5635390c0370 ..SRTP keying SDES created
+08:51:27.050 srtp0x5635390c0370 ..SRTP keying DTLS-SRTP created
+08:51:27.050 pjsua_media.c ..Media index 0 selected for audio call 0
+08:51:27.050 pjsua_media.c ..Call 0: media transport initialization complete: Success
+08:51:27.050 dlg0x5635390bbf78 ..Session count dec to 2 by mod-pjsua
+08:51:27.050 dlg0x5635390bbf78 .Module mod-invite added as dialog usage, data=0x5635390c3408
+08:51:27.050 dlg0x5635390bbf78 ..Session count inc to 4 by mod-invite
+08:51:27.050 dlg0x5635390bbf78 .Module mod-100rel added as dialog usage, data=0x5635390c5028
+08:51:27.050 dlg0x5635390bbf78 .100rel module attached
+08:51:27.050 inv0x5635390bbf78 .UAC invite session created for dialog dlg0x5635390bbf78
+08:51:27.050 endpoint .Request msg INVITE/cseq=10047 (tdta0x5635390c5518) created.
+08:51:27.050 inv0x5635390bbf78 ..Sending Request msg INVITE/cseq=10047 (tdta0x5635390c5518)
+08:51:27.050 dlg0x5635390bbf78 ...Sending Request msg INVITE/cseq=10047 (tdta0x5635390c5518)
+08:51:27.050 tsx0x5635390c8488 ....Transaction created for Request msg INVITE/cseq=10046 (tdta0x5635390c5518)
+08:51:27.050 tsx0x5635390c8488 ...Sending Request msg INVITE/cseq=10046 (tdta0x5635390c5518) in state Null
+08:51:27.050 sip_resolve.c ....Target '172.190.226.226:0' type=Unspecified resolved to '172.190.226.226:5060' type=UDP (UDP transport)
+08:51:27.050 pjsua_core.c ....TX 1246 bytes Request msg INVITE/cseq=10046 (tdta0x5635390c5518) to UDP 172.190.226.226:5060:
+INVITE sip:12542724613@172.190.226.226 SIP/2.0
+Via: SIP/2.0/UDP 10.9.16.116:5070;rport;branch=z9hG4bKPjY6zWqlv3YXIHqzTfRBMeTZIuoEOA40fP
+Max-Forwards: 70
+From: sip:Anonymous@20.110.145.242;transport;tag=e2FIHl5PMg1fpeXYsgHcQVEehzDjG1ch
+To: sip:12542724613@172.190.226.226
+Contact:
+Call-ID: IFsKpTuo3UkoaVW8nP7Q7EwTya7c8Ild
+CSeq: 10046 INVITE
+Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
+Supported: replaces, 100rel, timer, norefersub
+Session-Expires: 1800
+Min-SE: 90
+Content-Type: application/sdp
+Content-Length: 624
+
+v=0
+o=- 3916198287 3916198287 IN IP4 10.9.16.116
+s=pjmedia
+b=AS:84
+t=0 0
+a=X-nat:0
+m=audio 4000 RTP/AVP 96 97 98 99 3 0 8 9 120 121 122
+c=IN IP4 10.9.16.116
+b=TIAS:64000
+a=rtcp:4001 IN IP4 10.9.16.116
+a=sendrecv
+a=rtpmap:96 speex/16000
+a=rtpmap:97 speex/8000
+a=rtpmap:98 speex/32000
+a=rtpmap:99 iLBC/8000
+a=fmtp:99 mode=30
+a=rtpmap:3 GSM/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:9 G722/8000
+a=rtpmap:120 telephone-event/16000
+a=fmtp:120 0-16
+a=rtpmap:121 telephone-event/8000
+a=fmtp:121 0-16
+a=rtpmap:122 telephone-event/32000
+a=fmtp:122 0-16
+a=ssrc:72726459 cname:6c6524d04ed63c8c
+
+--end msg--
+08:51:27.050 tsx0x5635390c8488 ....State changed from Null to Calling, event=TX_MSG
+08:51:27.050 dlg0x5635390bbf78 .....Transaction tsx0x5635390c8488 state changed to Calling
+08:51:27.058 sip_endpoint.c !Processing incoming message: Response msg 100/INVITE/cseq=10046 (rdata0x5635390b5c98)
+08:51:27.058 pjsua_core.c .RX 358 bytes Response msg 100/INVITE/cseq=10046 (rdata0x5635390b5c98) from UDP 172.190.226.226:5060:
+SIP/2.0 100 Trying
+Via: SIP/2.0/UDP 10.9.16.116:5070;branch=z9hG4bKPjY6zWqlv3YXIHqzTfRBMeTZIuoEOA40fP;received=20.110.145.242;rport=5070
+From: sip:Anonymous@20.110.145.242;transport;tag=e2FIHl5PMg1fpeXYsgHcQVEehzDjG1ch
+To: sip:12542724613@172.190.226.226;tag=gK10801720
+Call-ID: IFsKpTuo3UkoaVW8nP7Q7EwTya7c8Ild
+CSeq: 10046 INVITE
+Content-Length: 0
+
+
+--end msg--
+08:51:27.058 tsx0x5635390c8488 .Incoming Response msg 100/INVITE/cseq=10046 (rdata0x5635390b5c98) in state Calling
+08:51:27.058 tsx0x5635390c8488 ..State changed from Calling to Proceeding, event=RX_MSG
+08:51:27.058 dlg0x5635390bbf78 ...Received Response msg 100/INVITE/cseq=10046 (rdata0x5635390b5c98)
+08:51:27.058 dlg0x5635390bbf78 ...Transaction tsx0x5635390c8488 state changed to Proceeding
+08:51:27.058 sip_endpoint.c Processing incoming message: Response msg 500/INVITE/cseq=10046 (rdata0x7f00240016b8)
+08:51:27.058 pjsua_core.c .RX 373 bytes Response msg 500/INVITE/cseq=10046 (rdata0x7f00240016b8) from UDP 172.190.226.226:5060:
+SIP/2.0 500 Server Internal Error
+Via: SIP/2.0/UDP 10.9.16.116:5070;branch=z9hG4bKPjY6zWqlv3YXIHqzTfRBMeTZIuoEOA40fP;received=20.110.145.242;rport=5070
+From: sip:Anonymous@20.110.145.242;transport;tag=e2FIHl5PMg1fpeXYsgHcQVEehzDjG1ch
+To: sip:12542724613@172.190.226.226;tag=gK10801720
+Call-ID: IFsKpTuo3UkoaVW8nP7Q7EwTya7c8Ild
+CSeq: 10046 INVITE
+Content-Length: 0
+
+
+--end msg--
+08:51:27.058 tsx0x5635390c8488 .Incoming Response msg 500/INVITE/cseq=10046 (rdata0x7f00240016b8) in state Proceeding
+08:51:27.058 endpoint ..Request msg ACK/cseq=10046 (tdta0x7f0024003688) created.
+08:51:27.058 pjsua_core.c ..TX 370 bytes Request msg ACK/cseq=10046 (tdta0x7f0024003688) to UDP 172.190.226.226:5060:
+ACK sip:12542724613@172.190.226.226 SIP/2.0
+Via: SIP/2.0/UDP 10.9.16.116:5070;rport;branch=z9hG4bKPjY6zWqlv3YXIHqzTfRBMeTZIuoEOA40fP
+Max-Forwards: 70
+From: sip:Anonymous@20.110.145.242;transport;tag=e2FIHl5PMg1fpeXYsgHcQVEehzDjG1ch
+To: sip:12542724613@172.190.226.226;tag=gK10801720
+Call-ID: IFsKpTuo3UkoaVW8nP7Q7EwTya7c8Ild
+CSeq: 10046 ACK
+Content-Length: 0
+
+
+--end msg--
+08:51:27.058 tsx0x5635390c8488 ..State changed from Proceeding to Completed, event=RX_MSG
+08:51:27.058 dlg0x5635390bbf78 ...Received Response msg 500/INVITE/cseq=10046 (rdata0x7f00240016b8)
+08:51:27.058 dlg0x5635390bbf78 ...Transaction tsx0x5635390c8488 state changed to Completed
+08:51:27.059 pjsua_media.c .....Call 0: deinitializing media..
+08:51:27.059 pjsua_media.c ......Call 0: cleaning up provisional media, prov_med_cnt=1, med_cnt=0
+08:51:27.059 dlg0x5635390bbf78 .....Session count dec to 1 by mod-invite
+08:51:27.059 tdta0x5635390c5518 ..Destroying txdata Request msg INVITE/cseq=10046 (tdta0x5635390c5518)
+08:51:27.251 pjsua_core.c !Shutting down, flags=0...
+08:51:27.251 pjsua_core.c PJSUA state changed: RUNNING --> CLOSING
+08:51:27.261 pjsua_call.c .Hangup all calls..
+08:51:27.261 pjsua_media.c .Call 0: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 1: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 2: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 3: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 4: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 5: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 6: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 7: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 8: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 9: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 10: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 11: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 12: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 13: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 14: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 15: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 16: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 17: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 18: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 19: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 20: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 21: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 22: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 23: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 24: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 25: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 26: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 27: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 28: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 29: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 30: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 31: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 32: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 33: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 34: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 35: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 36: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 37: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 38: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 39: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 40: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 41: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 42: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 43: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 44: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 45: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 46: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 47: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 48: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 49: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 50: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 51: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 52: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 53: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 54: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 55: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 56: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 57: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 58: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 59: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 60: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 61: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 62: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 63: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 64: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 65: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 66: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 67: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 68: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 69: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 70: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 71: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 72: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 73: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 74: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 75: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 76: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 77: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 78: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 79: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 80: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 81: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 82: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 83: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 84: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 85: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 86: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 87: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 88: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 89: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 90: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 91: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 92: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 93: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 94: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 95: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 96: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 97: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 98: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 99: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 100: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 101: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 102: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 103: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 104: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 105: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 106: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 107: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 108: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 109: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 110: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 111: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 112: deinitializing media..
+08:51:27.261 pjsua_media.c .Call 113: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 114: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 115: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 116: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 117: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 118: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 119: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 120: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 121: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 122: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 123: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 124: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 125: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 126: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 127: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 128: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 129: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 130: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 131: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 132: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 133: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 134: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 135: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 136: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 137: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 138: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 139: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 140: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 141: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 142: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 143: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 144: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 145: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 146: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 147: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 148: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 149: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 150: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 151: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 152: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 153: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 154: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 155: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 156: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 157: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 158: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 159: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 160: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 161: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 162: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 163: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 164: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 165: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 166: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 167: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 168: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 169: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 170: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 171: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 172: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 173: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 174: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 175: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 176: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 177: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 178: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 179: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 180: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 181: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 182: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 183: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 184: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 185: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 186: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 187: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 188: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 189: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 190: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 191: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 192: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 193: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 194: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 195: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 196: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 197: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 198: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 199: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 200: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 201: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 202: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 203: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 204: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 205: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 206: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 207: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 208: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 209: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 210: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 211: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 212: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 213: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 214: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 215: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 216: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 217: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 218: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 219: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 220: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 221: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 222: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 223: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 224: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 225: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 226: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 227: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 228: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 229: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 230: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 231: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 232: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 233: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 234: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 235: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 236: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 237: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 238: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 239: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 240: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 241: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 242: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 243: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 244: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 245: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 246: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 247: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 248: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 249: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 250: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 251: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 252: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 253: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 254: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 255: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 256: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 257: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 258: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 259: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 260: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 261: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 262: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 263: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 264: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 265: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 266: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 267: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 268: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 269: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 270: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 271: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 272: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 273: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 274: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 275: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 276: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 277: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 278: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 279: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 280: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 281: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 282: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 283: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 284: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 285: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 286: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 287: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 288: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 289: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 290: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 291: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 292: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 293: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 294: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 295: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 296: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 297: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 298: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 299: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 300: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 301: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 302: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 303: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 304: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 305: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 306: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 307: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 308: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 309: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 310: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 311: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 312: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 313: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 314: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 315: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 316: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 317: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 318: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 319: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 320: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 321: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 322: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 323: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 324: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 325: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 326: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 327: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 328: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 329: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 330: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 331: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 332: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 333: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 334: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 335: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 336: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 337: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 338: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 339: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 340: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 341: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 342: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 343: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 344: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 345: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 346: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 347: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 348: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 349: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 350: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 351: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 352: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 353: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 354: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 355: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 356: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 357: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 358: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 359: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 360: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 361: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 362: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 363: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 364: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 365: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 366: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 367: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 368: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 369: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 370: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 371: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 372: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 373: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 374: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 375: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 376: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 377: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 378: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 379: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 380: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 381: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 382: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 383: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 384: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 385: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 386: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 387: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 388: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 389: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 390: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 391: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 392: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 393: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 394: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 395: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 396: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 397: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 398: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 399: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 400: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 401: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 402: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 403: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 404: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 405: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 406: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 407: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 408: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 409: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 410: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 411: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 412: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 413: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 414: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 415: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 416: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 417: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 418: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 419: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 420: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 421: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 422: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 423: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 424: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 425: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 426: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 427: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 428: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 429: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 430: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 431: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 432: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 433: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 434: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 435: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 436: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 437: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 438: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 439: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 440: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 441: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 442: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 443: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 444: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 445: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 446: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 447: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 448: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 449: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 450: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 451: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 452: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 453: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 454: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 455: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 456: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 457: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 458: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 459: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 460: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 461: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 462: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 463: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 464: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 465: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 466: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 467: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 468: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 469: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 470: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 471: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 472: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 473: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 474: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 475: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 476: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 477: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 478: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 479: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 480: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 481: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 482: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 483: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 484: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 485: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 486: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 487: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 488: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 489: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 490: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 491: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 492: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 493: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 494: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 495: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 496: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 497: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 498: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 499: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 500: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 501: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 502: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 503: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 504: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 505: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 506: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 507: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 508: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 509: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 510: deinitializing media..
+08:51:27.262 pjsua_media.c .Call 511: deinitializing media..
+08:51:27.262 pjsua_pres.c .Shutting down presence..
+08:51:28.050 pjsua_aud.c .Closing sound device after idle for 1 second(s)
+08:51:28.050 pjsua_aud.c ..Closing null sound device..
+08:51:28.261 pjsua_core.c .Destroying...
+08:51:28.261 pjsua_media.c .Shutting down media..
+08:51:28.354 sip_endpoint.c .Destroying endpoint instance..
+08:51:28.354 sip_transaction.c .Stopping transaction layer module
+08:51:28.354 tsx0x5635390c8488 .Request to terminate transaction
+08:51:28.355 tsx0x5635390c8488 ..State changed from Completed to Terminated, event=USER
+08:51:28.355 dlg0x5635390bbf78 ...Transaction tsx0x5635390c8488 state changed to Terminated
+08:51:28.355 dlg0x5635390bbf78 ....Dialog destroyed!
+08:51:28.355 tdta0x7f0024003688 .Destroying txdata Request msg ACK/cseq=10046 (tdta0x7f0024003688)
+08:51:28.355 tsx0x5635390c8488 .Transaction destroyed!
+08:51:28.355 sip_transaction.c .Stopped transaction layer module
+08:51:28.355 sip_endpoint.c .Module "mod-unsolicited-mwi" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-pjsua-options" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-pjsua-im" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-pjsua-pres" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-pjsua" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-stateful-util" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-refer" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-mwi" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-presence" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-evsub" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-invite" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-100rel" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-ua" unregistered
+08:51:28.355 sip_transaction.c .Transaction layer module destroyed
+08:51:28.355 sip_endpoint.c .Module "mod-tsx-layer" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-msg-print" unregistered
+08:51:28.355 sip_endpoint.c .Module "mod-pjsua-log" unregistered
+08:51:28.355 sip_transport.c .Destroying transport manager
+08:51:28.356 udp0x563538ff4b40 .SIP UDP transport destroyed
+08:51:28.356 tcptp:5070 .SIP TCP transport destroyed
+08:51:28.356 tlstp:5071 .SIP TLS transport destroyed
+08:51:28.356 timer.c .Dumping timer heap:
+08:51:28.356 timer.c . Cur size: 0 entries, max: 3070
+08:51:28.356 sip_endpoint.c .Endpoint 0x563538f1f448 destroyed
+08:51:28.356 pjsua_core.c .PJSUA state changed: CLOSING --> NULL
+08:51:28.356 pjsua_core.c .PJSUA destroyed...
diff --git a/voip_patrol b/voip_patrol
new file mode 100755
index 0000000..546ae95
Binary files /dev/null and b/voip_patrol differ
diff --git a/xml/basic_server.xml b/xml/basic_server.xml
new file mode 100644
index 0000000..359a731
--- /dev/null
+++ b/xml/basic_server.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/xml/udp_server.xml b/xml/udp_server.xml
new file mode 100644
index 0000000..66b345e
--- /dev/null
+++ b/xml/udp_server.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+