aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-10-01 04:53:53 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-10-01 04:53:53 +0000
commitca6ae2cb1be99d817cfda6942b6cf570fc7abb68 (patch)
tree033a1fbf594788e66acf99b86f64ff6c456564bd
parent6168e19e246d5b2c6deda096a6ba2112faac0921 (diff)
Check registry carefully before unlinking
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1592 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_sip.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 0ac22f96e..03df2dda6 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -889,7 +889,14 @@ static void __sip_destroy(struct sip_pvt *p, int lockowner)
p->route = NULL;
}
if (p->registry) {
- p->registry->call=NULL;
+ /* Carefully unlink from registry */
+ struct sip_registry *reg;
+ reg = registrations;
+ while(reg) {
+ if ((reg == p->registry) && (p->registry->call == p))
+ p->registry->call=NULL;
+ reg = reg->next;
+ }
}
/* Unlink us from the owner if we have one */
if (p->owner) {