From e02293d94dc7222ec8da14a317cec632b65b9390 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 26 Mar 2014 11:39:10 +0800 Subject: [PATCH] fix bug of handshake with nginx-rtmp for forward, change to 0.9.33 --- trunk/src/core/srs_core.hpp | 2 +- trunk/src/rtmp/srs_protocol_handshake.cpp | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index bc5500baf..5ea7151c9 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR "0" #define VERSION_MINOR "9" -#define VERSION_REVISION "32" +#define VERSION_REVISION "33" #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION // server info. #define RTMP_SIG_SRS_KEY "srs" diff --git a/trunk/src/rtmp/srs_protocol_handshake.cpp b/trunk/src/rtmp/srs_protocol_handshake.cpp index 2048a5d39..26ba08916 100644 --- a/trunk/src/rtmp/srs_protocol_handshake.cpp +++ b/trunk/src/rtmp/srs_protocol_handshake.cpp @@ -767,7 +767,7 @@ namespace srs destroy_blocks(); time = ::time(NULL); - version = 0x02070080; // client c1 version + version = 0x00000000; // client c1 version if (_schema == srs_schema0) { srs_key_block_init(&block0.key); @@ -1005,8 +1005,6 @@ int SrsSimpleHandshake::handshake_with_client(SrsHandshakeBytes* hs_bytes, ISrsP return ret; } - // plain text required. - hs_bytes->s0s1s2[0] = 0x03; if ((ret = io->write(hs_bytes->s0s1s2, 3073, &nsize)) != ERROR_SUCCESS) { srs_warn("simple handshake send s0s1s2 failed. ret=%d", ret); return ret; @@ -1032,8 +1030,6 @@ int SrsSimpleHandshake::handshake_with_server(SrsHandshakeBytes* hs_bytes, ISrsP if ((ret = hs_bytes->create_c0c1()) != ERROR_SUCCESS) { return ret; } - // plain text required. - hs_bytes->c0c1[0] = 0x03; if ((ret = io->write(hs_bytes->c0c1, 1537, &nsize)) != ERROR_SUCCESS) { srs_warn("write c0c1 failed. ret=%d", ret); @@ -1147,8 +1143,6 @@ int SrsComplexHandshake::handshake_with_client(SrsHandshakeBytes* hs_bytes, ISrs if ((ret = hs_bytes->create_s0s1s2()) != ERROR_SUCCESS) { return ret; } - // plain text required. - hs_bytes->s0s1s2[0] = 0x03; s1.dump(hs_bytes->s0s1s2 + 1); s2.dump(hs_bytes->s0s1s2 + 1537); if ((ret = io->write(hs_bytes->s0s1s2, 3073, &nsize)) != ERROR_SUCCESS) { @@ -1191,8 +1185,6 @@ int SrsComplexHandshake::handshake_with_server(SrsHandshakeBytes* hs_bytes, ISrs if ((ret = hs_bytes->create_c0c1()) != ERROR_SUCCESS) { return ret; } - // plain text required. - hs_bytes->c0c1[0] = 0x03; // sign c1 c1s1 c1; @@ -1230,10 +1222,10 @@ int SrsComplexHandshake::handshake_with_server(SrsHandshakeBytes* hs_bytes, ISrs if ((ret = s1.parse(hs_bytes->s0s1s2 + 1, c1.schema)) != ERROR_SUCCESS) { return ret; } - if ((ret = s1.s1_validate_digest(is_valid)) != ERROR_SUCCESS || !is_valid) { - ret = ERROR_RTMP_TRY_SIMPLE_HS; - return ret; - } + + // never verify the s1, + // for if forward to nginx-rtmp, verify s1 will failed, + // TODO: FIXME: find the handshake schema of nginx-rtmp. // c2 if ((ret = hs_bytes->create_c2()) != ERROR_SUCCESS) {