From 57a96ac2bc1812188aa81237ad582ca115f4391f Mon Sep 17 00:00:00 2001 From: Roman Arutyunyan Date: Wed, 1 Jan 2014 13:13:16 +0400 Subject: [PATCH] improved Envivio fix: now key length can be unfinalized with object --- ngx_rtmp_amf.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ngx_rtmp_amf.c b/ngx_rtmp_amf.c index 4e65878..f133d0e 100644 --- a/ngx_rtmp_amf.c +++ b/ngx_rtmp_amf.c @@ -197,8 +197,15 @@ ngx_rtmp_amf_read_object(ngx_rtmp_amf_ctx_t *ctx, ngx_rtmp_amf_elt_t *elts, } #endif /* read key */ - if (ngx_rtmp_amf_get(ctx, buf, 2) != NGX_OK) + switch (ngx_rtmp_amf_get(ctx, buf, 2)) { + case NGX_DONE: + /* Envivio sends unfinalized arrays */ + return NGX_OK; + case NGX_OK: + break; + default: return NGX_ERROR; + } ngx_rtmp_amf_reverse_copy(&len, buf, 2); @@ -229,14 +236,9 @@ ngx_rtmp_amf_read_object(ngx_rtmp_amf_ctx_t *ctx, ngx_rtmp_amf_elt_t *elts, return NGX_ERROR; } - rc = ngx_rtmp_amf_get(ctx, &type, 1); - - /* Envivo encoder does not finalize objects properly */ - if (rc == NGX_DONE) { - return NGX_OK; - } - - if (rc != NGX_OK || type != NGX_RTMP_AMF_END) { + if (ngx_rtmp_amf_get(ctx, &type, 1) != NGX_OK + || type != NGX_RTMP_AMF_END) + { return NGX_ERROR; }