[Live-devel] RTCP bug in multicast?

Bruno Filipe Basilio Bruno.Basilio at brisa.pt
Wed Jun 8 07:15:34 PDT 2011


Hi Mark,

> I just read the rtcp.cpp and find a problem in multicast mode.
> In RTCPInstance::incomingReportHandler1(), from line 342

There's a report of a similar problem which is affecting me also.
You can see the symptoms here:
http://lists.live555.com/pipermail/live-devel/2011-May/013313.html


>   To avoid this bug we must enable the code in
> Groupsock::multicastSendOnly(), so the server will not received any
> multicast packets that it just sent out.

I'm not shore how to implement your suggestion and I would very appreciated if could you help me on this?
Something like a patch would be great.


Best regards,
Bruno Basilio
Brisa Inovação e Tecnologia, S.A.

>
> ------------------------------
>
> Message: 5
> Date: Mon, 25 Apr 2011 14:10:32 +0800
> From: Mark <hustmark at gmail.com>
> To: live-devel <live-devel at ns.live555.com>
> Subject: [Live-devel] RTCP bug in multicast?
> Message-ID: <BANLkTinODCyKg=a-N892GmuQnqY7DXA5hg at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Hi Ross,
>    I just read the rtcp.cpp and find a problem in multicast mode.
>    In RTCPInstance::incomingReportHandler1(), from line 342 :
>
>    // Ignore the packet if it was looped-back from ourself:
>    if (RTCPgs()->wasLoopedBackFromUs(envir(), fromAddress)) {
>      // However, we still want to handle incoming RTCP packets from
>      // *other processes* on the same machine.  To distinguish this
>      // case from a true loop-back, check whether we've just sent a
>      // packet of the same size.  (This check isn't perfect, but it
> seems
>      // to be the best we can do.)
>      if (fHaveJustSentPacket && fLastPacketSentSize == packetSize) {
>        // This is a true loop-back:
>        fHaveJustSentPacket = False;
>        break; // ignore this packet
>      }
>    }
>
>  Here, the mechanism to prevent endless loop seems not perfect,
> checking the variables fHaveJustSentPacket  and fLastPacketSentSize is
> not enough.
>
>  Think about this situation:
>   1.  client1 sends out an RR(receive report)
>   2.  server receives the RR and run into
> RTCPInstance::incomingReportHandler1()
>   3.  before server runs to line 364 of rtcp.cpp (
> fRTCPInterface.sendPacket(pkt, packetSize); ) , client2 sends out an
> RR packet
>   4.  now server runs line 364-366;  resending the client1's RR
> packet to the multicast group, then modify fHaveJustSentPacket and
> fLastPacketSentSize;
>      fRTCPInterface.sendPacket(pkt, packetSize);
>      fHaveJustSentPacket = True;
>      fLastPacketSentSize = packetSize;
>   5. in the next SingleStep(),  the RTCP will receive the client2's
> RR packet and resending the packet( line 364-366 of  rtcp.cpp) to the
> multicast group
>   6. in the next SingleStep(), the RR packet in step 4 is arrived and
> server runs into RTCPInstance::incomingReportHandler1(), when it check
> looped-back packet in line 342,
>       the variables fHaveJustSentPacket  and fLastPacketSentSize are
> modified in step 5, so the checking is incorrect and may cause endless
> loop of multicast RTCP packet sending
>
>   To avoid this bug we must enable the code in
> Groupsock::multicastSendOnly(), so the server will not received any
> multicast packets that it just sent out.
>



--------------------------------------------------------------------------------

Declaração:
A informação contida nesta mensagem, e os ficheiros anexos, é privilegiada e confidencial, destinando-se exclusivamente ao(s) destinatário(s).Se não é o destinatário (ou o responsável pela sua entrega ao destinatário) e recebeu a mesma por engano, fica notificado que é estritamente proibido reproduzir, guardar ou distribuir toda ou qualquer parte desta mensagem e ficheiros anexos.Por favor reencaminhe a mensagem para o responsável pelo seu envio ou contacte-nos por telefone e elimine a mensagem e ficheiros anexos do seu computador,sem os reproduzir.

Disclaimer:
The information contained in this message, and any files attached, is privileged and confidential, and intended exclusively for the included addresses.If you are not the intended recipient (or the person responsible for delivering to the intended recipient) and received this message by mistake, be aware that copy, storage, distribution or any other use of all or part of this message and the files attached is strictly prohibited. Please notify the sender by reply e-mail or contact us by telephone and delete this message and the files attached, without retaining a copy.

--------------------------------------------------------------------------------




More information about the live-devel mailing list