winlin

fix #186, hotfix for bug #186, drop connect args when not object. 1.0.3.

@@ -202,6 +202,7 @@ Supported operating systems and hardware: @@ -202,6 +202,7 @@ Supported operating systems and hardware:
202 * 2013-10-17, Created.<br/> 202 * 2013-10-17, Created.<br/>
203 203
204 ## History 204 ## History
  205 +* v1.0, 2014-10-24, fix [#186](https://github.com/winlinvip/simple-rtmp-server/issues/186), hotfix for bug #186, drop connect args when not object. 1.0.3.
205 * v1.0, 2014-10-24, rename wiki/xxx to wiki/v1_xxx. 1.0.2. 206 * v1.0, 2014-10-24, rename wiki/xxx to wiki/v1_xxx. 1.0.2.
206 * v1.0, 2014-10-19, fix [#183](https://github.com/winlinvip/simple-rtmp-server/issues/183), hotfix for bug #183, donot support AnnexB when decoding RTMP body for HLS. 1.0.1. 207 * v1.0, 2014-10-19, fix [#183](https://github.com/winlinvip/simple-rtmp-server/issues/183), hotfix for bug #183, donot support AnnexB when decoding RTMP body for HLS. 1.0.1.
207 * <strong>v1.0, 2014-10-09, [1.0 beta(1.0.0)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.beta) released. 59316 lines.</strong> 208 * <strong>v1.0, 2014-10-09, [1.0 beta(1.0.0)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.beta) released. 59316 lines.</strong>
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR "1" 32 #define VERSION_MAJOR "1"
33 #define VERSION_MINOR "0" 33 #define VERSION_MINOR "0"
34 -#define VERSION_REVISION "2" 34 +#define VERSION_REVISION "3"
35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION 35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
36 // server info. 36 // server info.
37 #define RTMP_SIG_SRS_KEY "SRS" 37 #define RTMP_SIG_SRS_KEY "SRS"
@@ -1864,11 +1864,23 @@ int SrsConnectAppPacket::decode(SrsStream* stream) @@ -1864,11 +1864,23 @@ int SrsConnectAppPacket::decode(SrsStream* stream)
1864 1864
1865 if (!stream->empty()) { 1865 if (!stream->empty()) {
1866 srs_freep(args); 1866 srs_freep(args);
1867 - args = SrsAmf0Any::object();  
1868 - if ((ret = args->read(stream)) != ERROR_SUCCESS) { 1867 +
  1868 + // see: https://github.com/winlinvip/simple-rtmp-server/issues/186
  1869 + // the args maybe any amf0, for instance, a string. we should drop if not object.
  1870 + SrsAmf0Any* any = NULL;
  1871 + if ((ret = SrsAmf0Any::discovery(stream, &any)) != ERROR_SUCCESS) {
1869 srs_error("amf0 decode connect args failed. ret=%d", ret); 1872 srs_error("amf0 decode connect args failed. ret=%d", ret);
1870 return ret; 1873 return ret;
1871 } 1874 }
  1875 + srs_assert(any);
  1876 +
  1877 + // drop when not an AMF0 object.
  1878 + if (!any->is_object()) {
  1879 + srs_warn("drop the args, see: '4.1.1. connect', marker=%#x", any->marker);
  1880 + srs_freep(any);
  1881 + } else {
  1882 + args = any->to_object();
  1883 + }
1872 } 1884 }
1873 1885
1874 srs_info("amf0 decode connect packet success"); 1886 srs_info("amf0 decode connect packet success");