[Asterisk-code-review] core: Don't attempt to write to a stream that does not exist. (asterisk[15])

Joshua Colp asteriskteam at digium.com
Thu Nov 2 05:37:42 CDT 2017


Joshua Colp has uploaded this change for review. ( https://gerrit.asterisk.org/6962


Change subject: core: Don't attempt to write to a stream that does not exist.
......................................................................

core: Don't attempt to write to a stream that does not exist.

When a frame is provided to ast_write ensure that a multistream
capable channel has a stream for it before attempting to give it
to the channel driver. In some cases (such as a deferred SDP
negotiation) the stream may not yet exist.

ASTERISK-27364

Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276
---
M main/channel.c
1 file changed, 15 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/62/6962/1

diff --git a/main/channel.c b/main/channel.c
index 7d6e5db..7eb40d1 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -5054,7 +5054,11 @@
 	case AST_FRAME_VIDEO:
 		/* XXX Handle translation of video codecs one day XXX */
 		if (ast_channel_tech(chan)->write_stream) {
-			res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), fr);
+			if (stream) {
+				res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), fr);
+			} else {
+				res = 0;
+			}
 		} else if ((stream == default_stream) && ast_channel_tech(chan)->write_video) {
 			res = ast_channel_tech(chan)->write_video(chan, fr);
 		} else {
@@ -5063,7 +5067,11 @@
 		break;
 	case AST_FRAME_MODEM:
 		if (ast_channel_tech(chan)->write_stream) {
-			res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), fr);
+			if (stream) {
+				res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), fr);
+			} else {
+				res = 0;
+			}
 		} else if ((stream == default_stream) && ast_channel_tech(chan)->write) {
 			res = ast_channel_tech(chan)->write(chan, fr);
 		} else {
@@ -5251,7 +5259,11 @@
 			f = NULL;
 		} else {
 			if (ast_channel_tech(chan)->write_stream) {
-				res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), f);
+				if (stream) {
+					res = ast_channel_tech(chan)->write_stream(chan, ast_stream_get_position(stream), f);
+				} else {
+					res = 0;
+				}
 			} else if ((stream == default_stream) && ast_channel_tech(chan)->write) {
 				res = ast_channel_tech(chan)->write(chan, f);
 			} else {

-- 
To view, visit https://gerrit.asterisk.org/6962
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 15
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276
Gerrit-Change-Number: 6962
Gerrit-PatchSet: 1
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20171102/cda96a88/attachment-0001.html>


More information about the asterisk-code-review mailing list