mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Don't destory rtp until destroy, use rtp_stop instead
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@668 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3117,7 +3117,6 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
|
||||
{
|
||||
char *to;
|
||||
char *msg, *c;
|
||||
struct ast_rtp *rtp;
|
||||
struct ast_channel *owner;
|
||||
struct sip_peer *peer;
|
||||
int pingtime;
|
||||
@@ -3267,9 +3266,8 @@ retrylock:
|
||||
ast_verbose(VERBOSE_PREFIX_3 "Got SIP response %d \"%s\" back from %s\n", resp, rest, inet_ntoa(p->sa.sin_addr));
|
||||
p->alreadygone = 1;
|
||||
if (p->rtp) {
|
||||
struct sockaddr_in sin = { AF_INET, };
|
||||
/* Immediately stop RTP by setting transmit to 0 */
|
||||
ast_rtp_setpeer(p->rtp, &sin);
|
||||
/* Immediately stop RTP */
|
||||
ast_rtp_stop(p->rtp);
|
||||
}
|
||||
/* XXX Locking issues?? XXX */
|
||||
switch(resp) {
|
||||
@@ -3608,8 +3606,7 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
|
||||
p->alreadygone = 1;
|
||||
if (p->rtp) {
|
||||
/* Immediately stop RTP */
|
||||
ast_rtp_destroy(p->rtp);
|
||||
p->rtp = NULL;
|
||||
ast_rtp_stop(p->rtp);
|
||||
}
|
||||
if (p->owner)
|
||||
ast_queue_hangup(p->owner, 1);
|
||||
|
@@ -95,6 +95,8 @@ int ast_rtp_proto_register(struct ast_rtp_protocol *proto);
|
||||
|
||||
void ast_rtp_proto_unregister(struct ast_rtp_protocol *proto);
|
||||
|
||||
void ast_rtp_stop(struct ast_rtp *rtp);
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
}
|
||||
#endif
|
||||
|
6
rtp.c
6
rtp.c
@@ -586,6 +586,12 @@ void ast_rtp_get_us(struct ast_rtp *rtp, struct sockaddr_in *us)
|
||||
memcpy(us, &rtp->us, sizeof(rtp->us));
|
||||
}
|
||||
|
||||
void ast_rtp_stop(struct ast_rtp *rtp)
|
||||
{
|
||||
memset(&rtp->them.sin_addr, 0, sizeof(rtp->them.sin_addr));
|
||||
memset(&rtp->them.sin_port, 0, sizeof(rtp->them.sin_port));
|
||||
}
|
||||
|
||||
void ast_rtp_destroy(struct ast_rtp *rtp)
|
||||
{
|
||||
if (rtp->smoother)
|
||||
|
Reference in New Issue
Block a user