diff options
-rwxr-xr-x | channels/chan_sip.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 44bad0d5e..221402234 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -9189,10 +9189,18 @@ static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, } /* Go ahead and free RTP port */ if (p->rtp) { + if (p->owner) { + p->owner->fds[0] = -1; + p->owner->fds[1] = -1; + } ast_rtp_destroy(p->rtp); p->rtp = NULL; } if (p->vrtp) { + if (p->owner) { + p->owner->fds[2] = -1; + p->owner->fds[3] = -1; + } ast_rtp_destroy(p->vrtp); p->vrtp = NULL; } @@ -9219,10 +9227,18 @@ static int handle_request_register(struct sip_pvt *p, struct sip_request *req, i if (res < 1) { /* Go ahead and free RTP port */ if (p->rtp) { + if (p->owner) { + p->owner->fds[0] = -1; + p->owner->fds[1] = -1; + } ast_rtp_destroy(p->rtp); p->rtp = NULL; } if (p->vrtp) { + if (p->owner) { + p->owner->fds[2] = -1; + p->owner->fds[3] = -1; + } ast_rtp_destroy(p->vrtp); p->vrtp = NULL; } |