aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-25 02:33:21 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-25 02:33:21 +0000
commit6d50f4b601352c18d3335198c841524f2daab90e (patch)
treed3264d0339186bedee4e05abadd1dfe2d0d27066 /channels
parent9b4e385cccaa81181eff987ba534e5ecb79111d1 (diff)
ensure Asterisk won't segfault during re-registration (issue #5011)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6402 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_sip.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 1a047d594..f5e2cecb2 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1017,7 +1017,7 @@ static int append_history(struct sip_pvt *p, char *event, char *data)
struct sip_history *hist, *prev;
char *c;
- if (!recordhistory)
+ if (!recordhistory || !p)
return 0;
if(!(hist = malloc(sizeof(struct sip_history)))) {
ast_log(LOG_WARNING, "Can't allocate memory for history");
@@ -4747,7 +4747,7 @@ static int sip_reregister(void *data)
if (!r)
return 0;
- if (recordhistory) {
+ if (r->call && recordhistory) {
char tmp[80];
snprintf(tmp, sizeof(tmp), "Account: %s@%s", r->username, r->hostname);
append_history(r->call, "RegistryRenew", tmp);
@@ -4759,7 +4759,7 @@ static int sip_reregister(void *data)
r->expire = -1;
__sip_do_register(r);
- ASTOBJ_UNREF(r,sip_registry_destroy);
+ ASTOBJ_UNREF(r, sip_registry_destroy);
return 0;
}
@@ -4767,7 +4767,8 @@ static int sip_reregister(void *data)
static int __sip_do_register(struct sip_registry *r)
{
int res;
- res=transmit_register(r, SIP_REGISTER, NULL, NULL);
+
+ res = transmit_register(r, SIP_REGISTER, NULL, NULL);
return res;
}