diff --git a/libs/freetdm/cyginstall.sh b/libs/freetdm/cyginstall.sh index 2536889a65..9327719298 100644 --- a/libs/freetdm/cyginstall.sh +++ b/libs/freetdm/cyginstall.sh @@ -3,8 +3,9 @@ # FreeSWITCH is trunk is located at ../../ fsdir=../.. set -x -cp Debug/*.dll $fsdir/Debug/ cp Debug/mod/*.dll $fsdir/Debug/mod/ +cp mod_freetdm/Debug/*.pdb $fsdir/Debug/mod/ +cp Debug/*.dll $fsdir/Debug/ cp Debug/*.pdb $fsdir/Debug/ echo "FRIENDLY REMINDER: RECOMPILE ftmod_wanpipe WHENEVER YOU INSTALL NEW DRIVERS" set +x diff --git a/libs/freetdm/freetdm.2008.sln b/libs/freetdm/freetdm.2008.sln index 363ea1e996..75e6572252 100644 --- a/libs/freetdm/freetdm.2008.sln +++ b/libs/freetdm/freetdm.2008.sln @@ -54,6 +54,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testboost", "msvc\testboost EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsangomaboost", "msvc\testboost\testsangomaboost.2008.vcproj", "{0DA69C18-4FA1-4E8C-89CE-12498637C5BE}" + ProjectSection(ProjectDependencies) = postProject + {93B8812C-3EC4-4F78-8970-FFBFC99E167D} = {93B8812C-3EC4-4F78-8970-FFBFC99E167D} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.2008.vcproj b/libs/freetdm/mod_freetdm/mod_freetdm.2008.vcproj index b59214cf89..5ed38903e7 100644 --- a/libs/freetdm/mod_freetdm/mod_freetdm.2008.vcproj +++ b/libs/freetdm/mod_freetdm/mod_freetdm.2008.vcproj @@ -72,7 +72,7 @@ LinkIncremental="2" AdditionalLibraryDirectories=""../../../w32/Library/$(OutDir)"" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)$(TargetName).pdb" + ProgramDatabaseFile="$(OutDir)/$(TargetName).pdb" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" @@ -151,7 +151,7 @@ LinkIncremental="1" AdditionalLibraryDirectories=""../../../w32/Library/$(OutDir)"" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)$(TargetName).pdb" + ProgramDatabaseFile="$(OutDir)/$(TargetName).pdb" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" @@ -237,7 +237,7 @@ LinkIncremental="2" AdditionalLibraryDirectories=""../../../w32/Library/$(OutDir)"" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)$(TargetName).pdb" + ProgramDatabaseFile="$(OutDir)/$(TargetName).pdb" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" @@ -317,7 +317,7 @@ LinkIncremental="1" AdditionalLibraryDirectories=""../../../w32/Library/$(OutDir)"" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)$(TargetName).pdb" + ProgramDatabaseFile="$(OutDir)/$(TargetName).pdb" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 42793c964a..b7011b8edc 100644 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -3108,11 +3108,12 @@ SWITCH_STANDARD_API(ft_function) } stream->write_function(stream, "+OK gains set to Rx %f and Tx %f\n", rxgain, txgain); } else { + char *rply = ftdm_api_execute(cmd, NULL); if (rply) { stream->write_function(stream, "%s", rply); - free(rply); + ftdm_safe_free(rply); } else { stream->write_function(stream, "-ERR Usage: %s\n", FT_SYNTAX); } diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index fca0b62091..8c0744538d 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -223,6 +223,14 @@ static __inline__ void *ftdm_std_calloc(void *pool, ftdm_size_t elements, ftdm_s return ptr; } +static __inline__ void *ftdm_std_realloc(void *pool, void *buff, ftdm_size_t size) +{ + buff = realloc(buff, size); + pool = NULL; + ftdm_assert_return(buff != NULL, NULL, "Out of memory"); + return buff; +} + static __inline__ void ftdm_std_free(void *pool, void *ptr) { pool = NULL; @@ -235,6 +243,7 @@ FT_DECLARE_DATA ftdm_memory_handler_t g_ftdm_mem_handler = /*.pool =*/ NULL, /*.malloc =*/ ftdm_std_malloc, /*.calloc =*/ ftdm_std_calloc, + /*.realloc =*/ ftdm_std_realloc, /*.free =*/ ftdm_std_free }; @@ -4081,7 +4090,7 @@ FT_DECLARE_NONSTD(ftdm_status_t) ftdm_console_stream_write(ftdm_stream_handle_t void *new_data; new_len = handle->data_size + need + handle->alloc_chunk; - if ((new_data = realloc(handle->data, new_len))) { + if ((new_data = ftdm_realloc(handle->data, new_len))) { handle->data_size = handle->alloc_len = new_len; handle->data = new_data; buf = handle->data; diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c index 59088a3c01..f8e819e6d2 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c @@ -1798,7 +1798,7 @@ static FIO_API_FUNCTION(ftdm_sangoma_boost_api) if (sigmod_iface) { char *p = strchr(data, ' '); if (++p) { - char* mydup = strdup(p); + char* mydup = ftdm_strdup(p); if(sigmod_iface->exec_api == NULL) { stream->write_function(stream, "%s does not support api functions\n", sigmod_iface->name); goto done; @@ -1807,7 +1807,7 @@ static FIO_API_FUNCTION(ftdm_sangoma_boost_api) if (sigmod_iface->exec_api(stream, mydup) != FTDM_SUCCESS) { stream->write_function(stream, "-ERR:failed to execute command:%s\n", mydup); } - free(mydup); + ftdm_safe_free(mydup); } goto done; diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index dcf171b3d7..263e79d40f 100644 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -364,7 +364,7 @@ FT_DECLARE_NONSTD(ftdm_status_t) ftdm_console_stream_raw_write(ftdm_stream_handl FT_DECLARE_NONSTD(ftdm_status_t) ftdm_console_stream_write(ftdm_stream_handle_t *handle, const char *fmt, ...); #define FTDM_CMD_CHUNK_LEN 1024 -#define FTDM_STANDARD_STREAM(s) memset(&s, 0, sizeof(s)); s.data = malloc(FTDM_CMD_CHUNK_LEN); \ +#define FTDM_STANDARD_STREAM(s) memset(&s, 0, sizeof(s)); s.data = ftdm_malloc(FTDM_CMD_CHUNK_LEN); \ assert(s.data); \ memset(s.data, 0, FTDM_CMD_CHUNK_LEN); \ s.end = s.data; \ @@ -681,11 +681,13 @@ FT_DECLARE_DATA extern ftdm_crash_policy_t g_ftdm_crash_policy; typedef void *(*ftdm_malloc_func_t)(void *pool, ftdm_size_t len); typedef void *(*ftdm_calloc_func_t)(void *pool, ftdm_size_t elements, ftdm_size_t len); +typedef void *(*ftdm_realloc_func_t)(void *pool, void *buff, ftdm_size_t len); typedef void (*ftdm_free_func_t)(void *pool, void *ptr); typedef struct ftdm_memory_handler { void *pool; ftdm_malloc_func_t malloc; ftdm_calloc_func_t calloc; + ftdm_realloc_func_t realloc; ftdm_free_func_t free; } ftdm_memory_handler_t; @@ -873,6 +875,13 @@ FIO_CODEC_FUNCTION(fio_alaw2ulaw); */ #define ftdm_malloc(chunksize) g_ftdm_mem_handler.malloc(g_ftdm_mem_handler.pool, chunksize) +/*! + \brief Reallocates memory + \command buff the buffer + \command chunksize the chunk size +*/ +#define ftdm_realloc(buff, chunksize) g_ftdm_mem_handler.realloc(g_ftdm_mem_handler.pool, buff, chunksize) + /*! \brief Allocate initialized memory \command chunksize the chunk size