From 47a0e0807c48ddd553c9e5d160f424fefcbe784d Mon Sep 17 00:00:00 2001
From: Paul Cadach <paul@odt.east.telecom.kz>
Date: Thu, 28 Sep 2006 11:12:58 +0000
Subject: [PATCH] Merged revisions 43635,43843-43844,43846 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

........
r43635 | pcadach | 2006-09-26 03:26:12 +0600 (Втр, 26 Сен 2006) | 1 line

Fix ASN1 description of non-standard Cisco extensions
........
r43843 | pcadach | 2006-09-28 12:01:37 +0600 (Чтв, 28 Сен 2006) | 1 line

Don't treat unknown control frames as voice
........
r43844 | pcadach | 2006-09-28 12:02:45 +0600 (Чтв, 28 Сен 2006) | 1 line

Don't warn on HOLD/UNHOLD control frames
........
r43846 | pcadach | 2006-09-28 16:51:21 +0600 (Чтв, 28 Сен 2006) | 1 line

Do not open transmit channel until TCS is received
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43853 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/h323/ast_h323.cxx   |  4 ++++
 channels/h323/cisco-h225.asn |  2 +-
 channels/h323/cisco-h225.cxx | 10 +++++-----
 channels/h323/cisco-h225.h   |  4 ++--
 main/file.c                  |  3 +++
 5 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/channels/h323/ast_h323.cxx b/channels/h323/ast_h323.cxx
index 826be727b1..3b737f6432 100644
--- a/channels/h323/ast_h323.cxx
+++ b/channels/h323/ast_h323.cxx
@@ -1432,6 +1432,10 @@ H323Channel * MyH323Connection::CreateRealTimeLogicalChannel(const H323Capabilit
 									const H245_H2250LogicalChannelParameters * /*param*/,
 									RTP_QOS * /*param*/ )
 {
+	/* Do not open tx channel when transmitter has been paused by empty TCS */
+	if ((dir == H323Channel::IsTransmitter) && transmitterSidePaused)
+		return NULL;
+
 	return new MyH323_ExternalRTPChannel(*this, capability, dir, sessionID);
 }
 
diff --git a/channels/h323/cisco-h225.asn b/channels/h323/cisco-h225.asn
index c0eaeb6235..1372e67d58 100644
--- a/channels/h323/cisco-h225.asn
+++ b/channels/h323/cisco-h225.asn
@@ -7,8 +7,8 @@ H323_UU_NonStdInfo ::= SEQUENCE
 	protoParam ProtoParam OPTIONAL,
 	commonParam CommonParam OPTIONAL,
 	...,
-	progIndParam ProgIndParam OPTIONAL,
 	dummy1 OCTET STRING OPTIONAL,
+	progIndParam ProgIndParam OPTIONAL,
 	callMgrParam CallMgrParam OPTIONAL,
 	callSignallingParam CallSignallingParam OPTIONAL,
 	dummy2 OCTET STRING OPTIONAL,
diff --git a/channels/h323/cisco-h225.cxx b/channels/h323/cisco-h225.cxx
index 1b52f4ca09..37adc4e875 100644
--- a/channels/h323/cisco-h225.cxx
+++ b/channels/h323/cisco-h225.cxx
@@ -739,10 +739,10 @@ void CISCO_H225_H323_UU_NonStdInfo::PrintOn(ostream & strm) const
     strm << setw(indent+13) << "protoParam = " << setprecision(indent) << m_protoParam << '\n';
   if (HasOptionalField(e_commonParam))
     strm << setw(indent+14) << "commonParam = " << setprecision(indent) << m_commonParam << '\n';
-  if (HasOptionalField(e_progIndParam))
-    strm << setw(indent+15) << "progIndParam = " << setprecision(indent) << m_progIndParam << '\n';
   if (HasOptionalField(e_dummy1))
     strm << setw(indent+9) << "dummy1 = " << setprecision(indent) << m_dummy1 << '\n';
+  if (HasOptionalField(e_progIndParam))
+    strm << setw(indent+15) << "progIndParam = " << setprecision(indent) << m_progIndParam << '\n';
   if (HasOptionalField(e_callMgrParam))
     strm << setw(indent+15) << "callMgrParam = " << setprecision(indent) << m_callMgrParam << '\n';
   if (HasOptionalField(e_callSignallingParam))
@@ -800,10 +800,10 @@ BOOL CISCO_H225_H323_UU_NonStdInfo::Decode(PASN_Stream & strm)
     return FALSE;
   if (HasOptionalField(e_commonParam) && !m_commonParam.Decode(strm))
     return FALSE;
-  if (!KnownExtensionDecode(strm, e_progIndParam, m_progIndParam))
-    return FALSE;
   if (!KnownExtensionDecode(strm, e_dummy1, m_dummy1))
     return FALSE;
+  if (!KnownExtensionDecode(strm, e_progIndParam, m_progIndParam))
+    return FALSE;
   if (!KnownExtensionDecode(strm, e_callMgrParam, m_callMgrParam))
     return FALSE;
   if (!KnownExtensionDecode(strm, e_callSignallingParam, m_callSignallingParam))
@@ -827,8 +827,8 @@ void CISCO_H225_H323_UU_NonStdInfo::Encode(PASN_Stream & strm) const
     m_protoParam.Encode(strm);
   if (HasOptionalField(e_commonParam))
     m_commonParam.Encode(strm);
-  KnownExtensionEncode(strm, e_progIndParam, m_progIndParam);
   KnownExtensionEncode(strm, e_dummy1, m_dummy1);
+  KnownExtensionEncode(strm, e_progIndParam, m_progIndParam);
   KnownExtensionEncode(strm, e_callMgrParam, m_callMgrParam);
   KnownExtensionEncode(strm, e_callSignallingParam, m_callSignallingParam);
   KnownExtensionEncode(strm, e_dummy2, m_dummy2);
diff --git a/channels/h323/cisco-h225.h b/channels/h323/cisco-h225.h
index db4e0af0be..7595b4b65b 100644
--- a/channels/h323/cisco-h225.h
+++ b/channels/h323/cisco-h225.h
@@ -262,8 +262,8 @@ class CISCO_H225_H323_UU_NonStdInfo : public PASN_Sequence
       e_version,
       e_protoParam,
       e_commonParam,
-      e_progIndParam,
       e_dummy1,
+      e_progIndParam,
       e_callMgrParam,
       e_callSignallingParam,
       e_dummy2,
@@ -273,8 +273,8 @@ class CISCO_H225_H323_UU_NonStdInfo : public PASN_Sequence
     PASN_Integer m_version;
     CISCO_H225_ProtoParam m_protoParam;
     CISCO_H225_CommonParam m_commonParam;
-    CISCO_H225_ProgIndParam m_progIndParam;
     PASN_OctetString m_dummy1;
+    CISCO_H225_ProgIndParam m_progIndParam;
     CISCO_H225_CallMgrParam m_callMgrParam;
     CISCO_H225_CallSignallingParam m_callSignallingParam;
     PASN_OctetString m_dummy2;
diff --git a/main/file.c b/main/file.c
index 766c38ab01..f8ca9afeb8 100644
--- a/main/file.c
+++ b/main/file.c
@@ -1056,11 +1056,14 @@ static int waitstream_core(struct ast_channel *c, const char *breakon,
 				case AST_CONTROL_RINGING:
 				case AST_CONTROL_ANSWER:
 				case AST_CONTROL_VIDUPDATE:
+				case AST_CONTROL_HOLD:
+				case AST_CONTROL_UNHOLD:
 					/* Unimportant */
 					break;
 				default:
 					ast_log(LOG_WARNING, "Unexpected control subclass '%d'\n", fr->subclass);
 				}
+				break;
 			case AST_FRAME_VOICE:
 				/* Write audio if appropriate */
 				if (audiofd > -1)
-- 
GitLab