{"object_kind":"push","event_name":"push","before":"f252ed337f4a84ddd376d1582ad27e1a3f754488","after":"6a191cd596e38942f88b92872dc76fb8bc817cdb","ref":"refs/heads/master","ref_protected":true,"checkout_sha":"6a191cd596e38942f88b92872dc76fb8bc817cdb","message":null,"user_id":3060,"user_name":"Wim Taymans","user_username":"wtaymans","user_email":"","user_avatar":"https://secure.gravatar.com/avatar/1ca1bed246cb9b95b7ead6d6be96bb09f0c112953140c8bb38b41aedf4465270?s=80&d=identicon","project_id":4753,"project":{"id":4753,"name":"pipewire","description":"Multimedia processing graphs","web_url":"https://gitlab.freedesktop.org/pipewire/pipewire","avatar_url":"https://gitlab.freedesktop.org/uploads/-/system/project/avatar/4753/pipewire.png","git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","git_http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git","namespace":"PipeWire","visibility_level":20,"path_with_namespace":"pipewire/pipewire","default_branch":"master","ci_config_path":"","homepage":"https://gitlab.freedesktop.org/pipewire/pipewire","url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git"},"commits":[{"id":"6a191cd596e38942f88b92872dc76fb8bc817cdb","message":"module-rtp-sink: close target sockets under the data loop lock\n\nstream_close_connection() runs in the main loop and resets\nrtp_target->socket_fd to -1, while stream_send_packet() reads that same\nfield from the data loop thread. Nothing synchronizes the two, so a\ntarget's socket can be closed and its FD invalidated while the data\nloop is iterating the target list, which can trip the\n\n spa_assert(rtp_target->socket_fd >= 0)\n\nin stream_send_packet().\n\nRun the socket teardown through rtp_stream_run_in_data_loop(), like the\nother functions that mutate the target list already do, so the FDs are\nonly modified while the data loop lock is held. The failure path of\nstream_open_connection() calls stream_close_connection() too, so it is\ncovered as well.\n\nFixes: d8f5ed0c1391 (\"module-rtp-sink: Add ability to add / remove receivers through commands\")\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n","title":"module-rtp-sink: close target sockets under the data loop lock","timestamp":"2026-08-27T12:45:12+00:00","url":"https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/6a191cd596e38942f88b92872dc76fb8bc817cdb","author":{"name":"Torkel Niklasson","email":"torkel@axis.com"},"added":[],"modified":["src/modules/module-rtp-sink.c"],"removed":[]}],"total_commits_count":1,"push_options":{},"repository":{"name":"pipewire","url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","description":"Multimedia processing graphs","homepage":"https://gitlab.freedesktop.org/pipewire/pipewire","git_http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git","git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","visibility_level":20}}