From 6a880530f1fefed790b00bfb615794d81ebf5b01 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Thu, 18 Jun 2020 17:15:13 -0700 Subject: [PATCH 1/2] obs-outputs: Handle rtmp NetStream.Publish.BadName response Adobe Media Server and nginx-rtmp can return this status response to a publisher if the key is already being used to publish. --- plugins/obs-outputs/librtmp/rtmp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/obs-outputs/librtmp/rtmp.c b/plugins/obs-outputs/librtmp/rtmp.c index 894582bfe..3db8ae686 100644 --- a/plugins/obs-outputs/librtmp/rtmp.c +++ b/plugins/obs-outputs/librtmp/rtmp.c @@ -3064,6 +3064,8 @@ static const AVal av_NetStream_Play_UnpublishNotify = static const AVal av_NetStream_Publish_Start = AVC("NetStream.Publish.Start"); static const AVal av_NetStream_Publish_Rejected = AVC("NetStream.Publish.Rejected"); static const AVal av_NetStream_Publish_Denied = AVC("NetStream.Publish.Denied"); +static const AVal av_NetStream_Publish_BadName = AVC("NetStream.Publish.BadName"); + /* Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' */ static int @@ -3314,7 +3316,8 @@ HandleInvoke(RTMP *r, const char *body, unsigned int nBodySize) || AVMATCH(&code, &av_NetStream_Play_StreamNotFound) || AVMATCH(&code, &av_NetConnection_Connect_InvalidApp) || AVMATCH(&code, &av_NetStream_Publish_Rejected) - || AVMATCH(&code, &av_NetStream_Publish_Denied)) + || AVMATCH(&code, &av_NetStream_Publish_Denied) + || AVMATCH(&code, &av_NetStream_Publish_BadName)) { r->m_stream_id = -1; RTMP_Close(r); From 1939472912ee041f6eb8fb9de14731f9c0d9ddba Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Thu, 18 Jun 2020 17:22:39 -0700 Subject: [PATCH 2/2] obs-outputs: Log unhandled rtmp status responses rtmp status responses that are not handled are currently silently ignored making it difficult to identify issues. --- plugins/obs-outputs/librtmp/rtmp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/obs-outputs/librtmp/rtmp.c b/plugins/obs-outputs/librtmp/rtmp.c index 3db8ae686..0fe63a356 100644 --- a/plugins/obs-outputs/librtmp/rtmp.c +++ b/plugins/obs-outputs/librtmp/rtmp.c @@ -3379,6 +3379,14 @@ HandleInvoke(RTMP *r, const char *body, unsigned int nBodySize) r->m_pausing = 3; } } + + else + { + if (description.av_len) + RTMP_Log(RTMP_LOGWARNING, "Unhandled: %s:\n%s (%s)", r->Link.tcUrl.av_val, code.av_val, description.av_val); + else + RTMP_Log(RTMP_LOGWARNING, "Unhandled: %s:\n%s", r->Link.tcUrl.av_val, code.av_val); + } } else if (AVMATCH(&method, &av_playlist_ready)) {