diff --git a/channels/h323/ast_h323.cxx b/channels/h323/ast_h323.cxx
index 826be727b1ccc33ed0c0405d8ae44b316d440a88..3b737f64323d0bf4dde5aabbf5568b1db6ad77db 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 c0eaeb623589501c6fd879858f54ab8fee5f93ae..1372e67d58a575db250818d38baaa38b35895236 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 1b52f4ca09ee41f04b2b5a44ad5d9cf6b47b0e1a..37adc4e875595fa4e9a8e72590146734d703a237 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 db4e0af0bea99cb8a9004f65ebeab135b9f93d43..7595b4b65b3ef7defc66383c58bf72ee49713176 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 766c38ab011f05c585b85ec1b95699ff427287d5..f8ca9afeb87fcec6decbad2eb30685a0ded7d045 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)