aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-08-21 20:23:45 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-08-21 20:23:45 +0000
commit372f90a15dfe3c99988678b6a289115820a84f7e (patch)
treea7316ebfee495e13e7eb9c84f0e2300003607df9
parentebb98bc68bb7264649f5b237c14ab8e62275dd61 (diff)
Ensure that T.38 INVITEs generated by Asterisk properly result in T.38 being enabled.
(closes issue #15373) Reported by: dcolombo Patches: chan_sip.patch uploaded by mbrancaleoni (license 342) Tested by: dcolombo, mbrancaleoni git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@213631 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5bb560691..87b4c6aa3 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5370,8 +5370,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
ast_verbose("Found RTP video format %d\n", codec);
ast_rtp_set_m_type(newvideortp, codec);
}
- } else if (p->udptl && ( (sscanf(m, "image %30d udptl t38%n", &x, &len) == 1 && len > 0) ||
- (sscanf(m, "image %30d UDPTL t38%n", &x, &len) == 1 && len >= 0) )) {
+ } else if (p->udptl && ((sscanf(m, "image %30d udptl t38%n", &x, &len) == 1 && len > 0) ||
+ (sscanf(m, "image %30d UDPTL t38%n", &x, &len) == 1 && len >= 0))) {
if (debug)
ast_verbose("Got T.38 offer in SDP in dialog %s\n", p->callid);
p->offered_media[SDP_IMAGE].offered = TRUE;
@@ -5379,9 +5379,11 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
numberofmediastreams++;
if (p->owner && p->lastinvite) {
- p->t38.state = T38_PEER_REINVITE; /* T38 Offered in re-invite from remote party */
- if (option_debug > 1)
- ast_log(LOG_DEBUG, "T38 state changed to %d on channel %s\n", p->t38.state, p->owner ? p->owner->name : "<none>" );
+ if(p->t38.state != T38_LOCAL_REINVITE) {
+ p->t38.state = T38_PEER_REINVITE; /* T38 Offered in re-invite from remote party */
+ if (option_debug > 1)
+ ast_log(LOG_DEBUG, "T38 state changed to %d on channel %s\n", p->t38.state, p->owner ? p->owner->name : "<none>" );
+ }
} else {
p->t38.state = T38_PEER_DIRECT; /* T38 Offered directly from peer in first invite */
p->t38.direct = 1;