mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-18 18:58:22 +00:00
first attempt to properly copy and then free call detail strings.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3485 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1054,12 +1054,12 @@ int setup_incoming_call(call_details_t cd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Populate the call details in the private structure */
|
/* Populate the call details in the private structure */
|
||||||
p->cd.call_token = cd.call_token;
|
p->cd.call_token = strdup(cd.call_token);
|
||||||
p->cd.call_source_aliases = cd.call_source_aliases;
|
p->cd.call_source_aliases = strdup(cd.call_source_aliases);
|
||||||
p->cd.call_dest_alias = cd.call_dest_alias;
|
p->cd.call_dest_alias = strdup(cd.call_dest_alias);
|
||||||
p->cd.call_source_name = cd.call_source_name;
|
p->cd.call_source_name = strdup(cd.call_source_name);
|
||||||
p->cd.call_source_e164 = cd.call_source_e164;
|
p->cd.call_source_e164 = strdup(cd.call_source_e164);
|
||||||
p->cd.call_dest_e164 = cd.call_dest_e164;
|
p->cd.call_dest_e164 = strdup(cd.call_dest_e164);
|
||||||
|
|
||||||
if (h323debug) {
|
if (h323debug) {
|
||||||
ast_verbose(VERBOSE_PREFIX_3 "Setting up Call\n");
|
ast_verbose(VERBOSE_PREFIX_3 "Setting up Call\n");
|
||||||
@@ -1291,6 +1291,32 @@ void chan_ringing(unsigned call_reference)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cleanup_call_details(call_details_t cd)
|
||||||
|
{
|
||||||
|
if (cd.call_token) {
|
||||||
|
free((const char*)cd.call_token);
|
||||||
|
}
|
||||||
|
if (cd.call_source_aliases) {
|
||||||
|
free((const char*)cd.call_source_aliases);
|
||||||
|
}
|
||||||
|
if (cd.call_dest_alias) {
|
||||||
|
free((const char*)cd.call_dest_alias);
|
||||||
|
}
|
||||||
|
if (cd.call_source_name) {
|
||||||
|
free((const char*)cd.call_source_name);
|
||||||
|
}
|
||||||
|
if (cd.call_source_e164) {
|
||||||
|
free((const char*)cd.call_source_e164);
|
||||||
|
}
|
||||||
|
if (cd.call_dest_e164) {
|
||||||
|
free((const char*)cd.call_dest_e164);
|
||||||
|
}
|
||||||
|
if (cd.sourceIp) {
|
||||||
|
free((const char*)cd.sourceIp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call-back function to cleanup communication
|
* Call-back function to cleanup communication
|
||||||
* Returns nothing,
|
* Returns nothing,
|
||||||
@@ -1335,6 +1361,8 @@ void cleanup_connection(call_details_t cd)
|
|||||||
ast_rtp_destroy(rtp);
|
ast_rtp_destroy(rtp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cleanup_call_details(p->cd);
|
||||||
|
|
||||||
p->alreadygone = 1;
|
p->alreadygone = 1;
|
||||||
|
|
||||||
/* Send hangup */
|
/* Send hangup */
|
||||||
|
@@ -375,11 +375,11 @@ void MyH323EndPoint::OnConnectionCleared(H323Connection & connection, const PStr
|
|||||||
remoteName = connection.GetRemotePartyName();
|
remoteName = connection.GetRemotePartyName();
|
||||||
|
|
||||||
cd.call_reference = connection.GetCallReference();
|
cd.call_reference = connection.GetCallReference();
|
||||||
cd.call_token = (const char *)clearedCallToken;
|
cd.call_token = strdup((const char *)clearedCallToken);
|
||||||
cd.call_source_aliases = (const char *)connection.GetRemotePartyName();
|
cd.call_source_aliases = strdup((const char *)connection.GetRemotePartyName());
|
||||||
|
|
||||||
connection.GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort);
|
connection.GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort);
|
||||||
cd.sourceIp = (const char *)Ip.AsString();
|
cd.sourceIp = strdup((const char *)Ip.AsString());
|
||||||
|
|
||||||
/* Convert complex strings */
|
/* Convert complex strings */
|
||||||
char *s;
|
char *s;
|
||||||
@@ -539,7 +539,6 @@ BOOL MyH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU)
|
|||||||
PString sourceName;
|
PString sourceName;
|
||||||
PString sourceAliases;
|
PString sourceAliases;
|
||||||
PString destAliases;
|
PString destAliases;
|
||||||
PString sourceIp;
|
|
||||||
PIPSocket::Address Ip;
|
PIPSocket::Address Ip;
|
||||||
WORD sourcePort;
|
WORD sourcePort;
|
||||||
char *s, *s1;
|
char *s, *s1;
|
||||||
@@ -567,18 +566,15 @@ BOOL MyH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU)
|
|||||||
|
|
||||||
|
|
||||||
cd.call_reference = GetCallReference();
|
cd.call_reference = GetCallReference();
|
||||||
cd.call_token = (const char *)GetCallToken();
|
cd.call_token = strdup((const char *)GetCallToken());
|
||||||
cd.call_source_aliases = (const char *)sourceAliases;
|
cd.call_source_aliases = strdup((const char *)sourceAliases);
|
||||||
cd.call_dest_alias = (const char *)destAliases;
|
cd.call_dest_alias = strdup((const char *)destAliases);
|
||||||
cd.call_source_e164 = (const char *)sourceE164;
|
cd.call_source_e164 = strdup((const char *)sourceE164);
|
||||||
cd.call_dest_e164 = (const char *)destE164;
|
cd.call_dest_e164 = strdup((const char *)destE164);
|
||||||
cd.call_source_name = (const char *)sourceName;
|
cd.call_source_name = strdup((const char *)sourceName);
|
||||||
|
|
||||||
GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort);
|
GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort);
|
||||||
sourceIp = Ip.AsString();
|
cd.sourceIp = strdup((const char *)Ip.AsString());
|
||||||
cd.sourceIp = (const char *)sourceIp;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Notify Asterisk of the request */
|
/* Notify Asterisk of the request */
|
||||||
int res = on_incoming_call(cd);
|
int res = on_incoming_call(cd);
|
||||||
@@ -622,11 +618,11 @@ BOOL MyH323Connection::OnSendSignalSetup(H323SignalPDU & setupPDU)
|
|||||||
*s1 = '\0';
|
*s1 = '\0';
|
||||||
|
|
||||||
cd.call_reference = GetCallReference();
|
cd.call_reference = GetCallReference();
|
||||||
cd.call_token = (const char *)GetCallToken();
|
cd.call_token = strdup((const char *)GetCallToken());
|
||||||
cd.call_source_aliases = (const char *)sourceAliases;
|
cd.call_source_aliases = strdup((const char *)sourceAliases);
|
||||||
cd.call_dest_alias = (const char *)destAliases;
|
cd.call_dest_alias = strdup((const char *)destAliases);
|
||||||
cd.call_source_e164 = (const char *)sourceE164;
|
cd.call_source_e164 = strdup((const char *)sourceE164);
|
||||||
cd.call_dest_e164 = (const char *)destE164;
|
cd.call_dest_e164 = strdup((const char *)destE164);
|
||||||
|
|
||||||
int res = on_outgoing_call(cd);
|
int res = on_outgoing_call(cd);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user