diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-25 02:33:21 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-25 02:33:21 +0000 |
commit | 6d50f4b601352c18d3335198c841524f2daab90e (patch) | |
tree | d3264d0339186bedee4e05abadd1dfe2d0d27066 | |
parent | 9b4e385cccaa81181eff987ba534e5ecb79111d1 (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
-rwxr-xr-x | channels/chan_sip.c | 9 |
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; } |