protocol/rtmp: connect failing due to incorrect handling of large packet

Issue #365 resolved
Saxon Milton created an issue

For some reason youtube has recently change the size of the “invoke” packet that is sent during the end of the connection handshake sequence. This has exposed a bug in our implementation of the RTMP protocol. The handling of this packet is failing due to a parsing problem of one of the objects in the packet. It seems as if an extra byte (0xc3, which should not be in the body) is being read, disrupting normal parsing of fields. The extra byte in question is actually a header of type (b11) that is used for aggregate messages i.e. messages that exceed the chunk size of 128 bytes. What should be happening is that the body should be being read in two stages, i.e. one stage for each chunk and the chunks then concatenated to form a body of a packet. Looking at differences between the C based librtmp version and our version (which is just a port of librtmp) it seems like we are missing code that deals with this situation.

Comments (1)

  1. Log in to comment