提交 7f5211b4 authored 作者: Michael Jerris's avatar Michael Jerris

fix leak when call hangs up or other error condition while saying an ip address…

fix leak when call hangs up or other error condition while saying an ip address (add mod_say_zh to windows build)

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9184 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 42327512
...@@ -961,6 +961,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applica ...@@ -961,6 +961,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applica
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2008.vcproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"
ProjectSection(ProjectDependencies) = postProject
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
...@@ -1662,6 +1667,12 @@ Global ...@@ -1662,6 +1667,12 @@ Global
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
...@@ -1771,6 +1782,7 @@ Global ...@@ -1771,6 +1782,7 @@ Global
{06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}
{7BFD517E-7F8F-4A40-A78E-8D3632738227} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} {7BFD517E-7F8F-4A40-A78E-8D3632738227} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}
{6374D55C-FABE-4A02-9CF1-4145308A56C5} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} {6374D55C-FABE-4A02-9CF1-4145308A56C5} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}
......
...@@ -236,28 +236,24 @@ static switch_status_t de_say_general_count(switch_core_session_t *session, ...@@ -236,28 +236,24 @@ static switch_status_t de_say_general_count(switch_core_session_t *session,
static switch_status_t de_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t de_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -270,9 +266,7 @@ static switch_status_t de_ip(switch_core_session_t *session, char *tosay, switch ...@@ -270,9 +266,7 @@ static switch_status_t de_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -225,28 +225,24 @@ static switch_status_t en_say_general_count(switch_core_session_t *session, ...@@ -225,28 +225,24 @@ static switch_status_t en_say_general_count(switch_core_session_t *session,
static switch_status_t en_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t en_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -259,9 +255,7 @@ static switch_status_t en_ip(switch_core_session_t *session, char *tosay, switch ...@@ -259,9 +255,7 @@ static switch_status_t en_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -225,28 +225,24 @@ static switch_status_t es_say_general_count(switch_core_session_t *session, ...@@ -225,28 +225,24 @@ static switch_status_t es_say_general_count(switch_core_session_t *session,
static switch_status_t es_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t es_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -259,9 +255,7 @@ static switch_status_t es_ip(switch_core_session_t *session, char *tosay, switch ...@@ -259,9 +255,7 @@ static switch_status_t es_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -225,28 +225,24 @@ static switch_status_t fr_say_general_count(switch_core_session_t *session, ...@@ -225,28 +225,24 @@ static switch_status_t fr_say_general_count(switch_core_session_t *session,
static switch_status_t fr_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t fr_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -259,9 +255,7 @@ static switch_status_t fr_ip(switch_core_session_t *session, char *tosay, switch ...@@ -259,9 +255,7 @@ static switch_status_t fr_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -225,28 +225,24 @@ static switch_status_t it_say_general_count(switch_core_session_t *session, ...@@ -225,28 +225,24 @@ static switch_status_t it_say_general_count(switch_core_session_t *session,
static switch_status_t it_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t it_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -259,9 +255,7 @@ static switch_status_t it_ip(switch_core_session_t *session, char *tosay, switch ...@@ -259,9 +255,7 @@ static switch_status_t it_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -225,28 +225,24 @@ static switch_status_t nl_say_general_count(switch_core_session_t *session, ...@@ -225,28 +225,24 @@ static switch_status_t nl_say_general_count(switch_core_session_t *session,
static switch_status_t nl_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t nl_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a, *b, *c, *d; char *a, *b, *c, *d;
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(a = switch_core_session_strdup(session, tosay))) {
if (!(a = strdup(tosay))) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if (!(b = strchr(a, '.'))) { if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*b++ = '\0'; *b++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(c = strchr(b, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*c++ = '\0'; *c++ = '\0';
if (!(d = strchr(c, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done;
} }
*d++ = '\0'; *d++ = '\0';
...@@ -259,9 +255,7 @@ static switch_status_t nl_ip(switch_core_session_t *session, char *tosay, switch ...@@ -259,9 +255,7 @@ static switch_status_t nl_ip(switch_core_session_t *session, char *tosay, switch
say_file("digits/dot.wav"); say_file("digits/dot.wav");
say_num(atoi(d), method); say_num(atoi(d), method);
done: return SWITCH_STATUS_SUCCESS;
switch_safe_free(a);
return status;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9.00"
Name="mod_say_zh" Name="mod_say_zh"
ProjectGUID="{988CACF7-3FCB-4992-BE69-77872AE67DC8}" ProjectGUID="{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"
RootNamespace="mod_say_zh" RootNamespace="mod_say_zh"
Keyword="Win32Proj" Keyword="Win32Proj"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
......
...@@ -290,51 +290,41 @@ static switch_status_t zh_say_general_count(switch_core_session_t *session, ...@@ -290,51 +290,41 @@ static switch_status_t zh_say_general_count(switch_core_session_t *session,
} }
static switch_status_t zh_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args) static switch_status_t zh_ip(switch_core_session_t *session, char *tosay, switch_say_type_t type, switch_say_method_t method, switch_input_args_t *args)
{ {
char *a; char *a, *b, *c, *d;
char *b; if (!(a = switch_core_session_strdup(session, tosay))) {
char *c; return SWITCH_STATUS_FALSE;
char *d; }
switch_status_t status = SWITCH_STATUS_SUCCESS; if (!(b = strchr(a, '.'))) {
if (!(a = strdup(tosay))) { return SWITCH_STATUS_FALSE;
return SWITCH_STATUS_FALSE; }
}
*b++ = '\0';
if (!(b = strchr(a, '.'))) {
status = SWITCH_STATUS_FALSE; if (!(c = strchr(b, '.'))) {
goto done; return SWITCH_STATUS_FALSE;
} }
*b++ = '\0'; *c++ = '\0';
if (!(c = strchr(b, '.'))) { if (!(d = strchr(c, '.'))) {
status = SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
goto done; }
}
*d++ = '\0';
*c++ = '\0';
say_num(atoi(a), method);
if (!(d = strchr(c, '.'))) { say_file("digits/dot.wav");
status = SWITCH_STATUS_FALSE; say_num(atoi(b), method);
goto done; say_file("digits/dot.wav");
} say_num(atoi(c), method);
say_file("digits/dot.wav");
*d++ = '\0'; say_num(atoi(d), method);
say_num(atoi(a), method); return SWITCH_STATUS_SUCCESS;
say_file("digits/dot.wav"); }
say_num(atoi(b), method);
say_file("digits/dot.wav");
say_num(atoi(c), method);
say_file("digits/dot.wav");
say_num(atoi(d), method);
done:
switch_safe_free(a);
return status;
}
static switch_status_t zh_say_time(switch_core_session_t *session, static switch_status_t zh_say_time(switch_core_session_t *session,
char *tosay, char *tosay,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论