提交 67427b03 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix small issue

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8341 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 a12d1bb3
...@@ -101,6 +101,7 @@ struct sofia_private { ...@@ -101,6 +101,7 @@ struct sofia_private {
sofia_gateway_t *gateway; sofia_gateway_t *gateway;
char gateway_name[512]; char gateway_name[512];
int destroy_nh; int destroy_nh;
int destroy_me;
}; };
#define set_param(ptr,val) if (ptr) {free(ptr) ; ptr = NULL;} if (val) {ptr = strdup(val);} #define set_param(ptr,val) if (ptr) {free(ptr) ; ptr = NULL;} if (val) {ptr = strdup(val);}
......
...@@ -350,6 +350,11 @@ void sofia_event_callback(nua_event_t event, ...@@ -350,6 +350,11 @@ void sofia_event_callback(nua_event_t event,
break; break;
} }
if (sofia_private && sofia_private->destroy_me) {
free(sofia_private);
sofia_private = NULL;
}
if (gateway) { if (gateway) {
sofia_reg_release_gateway(gateway); sofia_reg_release_gateway(gateway);
} }
...@@ -2108,14 +2113,14 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, ...@@ -2108,14 +2113,14 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
if (tech_pvt->sofia_private) { if (tech_pvt->sofia_private) {
sofia_private = tech_pvt->sofia_private; sofia_private = tech_pvt->sofia_private;
tech_pvt->sofia_private = NULL; tech_pvt->sofia_private = NULL;
free(sofia_private); sofia_private->destroy_me = 1;
} }
tech_pvt->nh = NULL; tech_pvt->nh = NULL;
} else if (sofia_private) { } else if (sofia_private) {
free(sofia_private); sofia_private->destroy_me = 1;
} }
if (nh) { if (nh) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论