diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index 3f2b91faa..26bbdf3fd 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -183,7 +183,25 @@ int srs_complex_handshake(srs_rtmp_t rtmp) return ERROR_RTMP_HS_SSL_REQUIRE; #endif - return ERROR_SUCCESS; + int ret = ERROR_SUCCESS; + + srs_assert(rtmp != NULL); + Context* context = (Context*)rtmp; + + // parse uri, resolve host, connect to server:port + if ((ret = srs_librtmp_context_connect(context)) != ERROR_SUCCESS) { + return ret; + } + + // complex handshake + srs_freep(context->rtmp); + context->rtmp = new SrsRtmpClient(context->skt); + + if ((ret = context->rtmp->complex_handshake()) != ERROR_SUCCESS) { + return ret; + } + + return ret; } int srs_connect_app(srs_rtmp_t rtmp)