#4929(avcodec:new): RTSP protocol not sending TEARDOWN packet
#4929: RTSP protocol not sending TEARDOWN packet -------------------------------------+------------------------------------- Reporter: | Type: defect nadenislamarre | Priority: important Status: new | Version: git- Component: avcodec | master Keywords: TEARDOWN | Blocked By: RTSP | Reproduced by developer: 0 Blocking: | Analyzed by developer: 0 | -------------------------------------+------------------------------------- Summary of the bug: When a client close a rtsp connexion, it is supposed to send the TEARDOWN packet according to https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol ffmpeg doesn't (controlled by wireshark), while i guess it worked at a given time while the code to do it is inside ffmpeg. In short, because my tv provider allows only 1 channel at a time, i've to wait 30 seconds between each channel change. Below, you'll find more detail, and a not perfect but working patch to show the problem more in detail. How to reproduce: {{{ % ffplay 'rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=ld' ffmpeg version : git version }}} The attached file is not really a patch while it's not the good way to fix. However, it works in my case. The thing is that rtsp::read_close function containing ff_rtsp_send_cmd_async(s, "TEARDOWN", rt->control_uri, NULL); is called after is->abort_request = 1; SDL_WaitThread(is->read_tid, NULL); and at the end, the packet is never sent. To quickly and badly fix, i've added a preclose function called before the sdl_waitthread. -- Ticket URL: <https://trac.ffmpeg.org/ticket/4929> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
#4929: RTSP protocol not sending TEARDOWN packet -------------------------------------+------------------------------------- Reporter: | Owner: nadenislamarre | Status: new Type: defect | Component: avformat Priority: normal | Resolution: Version: git-master | Blocked By: Keywords: rtsp | Reproduced by developer: 0 Blocking: | Analyzed by developer: 0 | -------------------------------------+------------------------------------- Changes (by cehoyos): * keywords: TEARDOWN RTSP => rtsp * priority: important => normal * component: avcodec => avformat Comment: Please send your patch to the development mailing list, patches are ignored on this bug tracker. -- Ticket URL: <https://trac.ffmpeg.org/ticket/4929#comment:1> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
#4929: RTSP protocol not sending TEARDOWN packet -------------------------------------+------------------------------------- Reporter: | Owner: nadenislamarre | Status: new Type: defect | Component: avformat Priority: normal | Resolution: Version: git-master | Blocked By: Keywords: rtsp | Reproduced by developer: 0 Blocking: | Analyzed by developer: 0 | -------------------------------------+------------------------------------- Comment (by nadenislamarre): in the lowest network function, there is a test : "if (ff_check_interrupt(int_cb))" which make things not working i can : or remove this check, but i think that it could be usefull for something else, or add a parameter "force" to low network functions, but it touches the network.c of ffmpeg, so i guess you would not accept it easily the thing is that testing if the user requesting to quit in this function it not valid with the fact that rtsp protocol require network packet sending at the disconnection. Comment these 2 lines in libavformat/avio.c & libavformat/network.c fixes the problem : if (ff_check_interrupt(&h->interrupt_callback)) return AVERROR_EXIT; -- Ticket URL: <https://trac.ffmpeg.org/ticket/4929#comment:2> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
#4929: RTSP protocol not sending TEARDOWN packet ------------------------------------+------------------------------------ Reporter: Nicolas | Owner: (none) Type: defect | Status: new Priority: normal | Component: avformat Version: git-master | Resolution: Keywords: rtsp | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | ------------------------------------+------------------------------------ Comment (by Balling): There is -rtpflags send_bye but that sends BYE which is just before TEARDOWN. It looks like TEARDOWN is no mandatery, at least in real implementations. -- Ticket URL: <https://trac.ffmpeg.org/ticket/4929#comment:3> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
#4929: RTSP protocol not sending TEARDOWN packet ------------------------------------+---------------------------------- Reporter: Nicolas | Owner: (none) Type: defect | Status: open Priority: normal | Component: ffplay Version: git-master | Resolution: Keywords: rtsp | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | ------------------------------------+---------------------------------- Changes (by Balling): * status: new => open * component: avformat => ffplay Comment: Ffmpeg is not affected. See #9792. -- Ticket URL: <https://trac.ffmpeg.org/ticket/4929#comment:4> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
participants (1)
-
FFmpeg