summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin P. Fleming <kpfleming@digium.com>2005-08-25 02:33:21 +0000
committerKevin P. Fleming <kpfleming@digium.com>2005-08-25 02:33:21 +0000
commit1cb8d005233e3bbc60a36edf39e895522814c4ff (patch)
treed3264d0339186bedee4e05abadd1dfe2d0d27066
parentbf6bc6d4fd293447be123a2ae6fb9e89b7b775be (diff)
ensure Asterisk won't segfault during re-registration (issue #5011)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6402 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-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;
}