From 371d3b947dac00e19dfa89c9d9a93ca7180c8ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kita?= Date: Tue, 22 Apr 2025 11:02:50 +0200 Subject: [PATCH 1/2] Fix order in which srt listen callback is set and when srt_listen is invoked. Fix path to ex_libsrt in examples/server.cpp --- c_src/ex_libsrt/server/server.cpp | 6 +++--- examples/server.exs | 12 ++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/c_src/ex_libsrt/server/server.cpp b/c_src/ex_libsrt/server/server.cpp index 29c5187..37dd24f 100644 --- a/c_src/ex_libsrt/server/server.cpp +++ b/c_src/ex_libsrt/server/server.cpp @@ -28,6 +28,9 @@ void Server::Run(const char* address, int port) { throw std::runtime_error(std::string(srt_getlasterror_str())); } + srt_listen_callback(srt_sock, + (srt_listen_callback_fn*)&Server::ListenAcceptCallback, + (void*)this); srt_bind_sock = srt_listen(srt_sock, MAX_PENDING_CONNECTIONS); if (srt_bind_sock == SRT_ERROR) { throw std::runtime_error(std::string(srt_getlasterror_str())); @@ -41,9 +44,6 @@ void Server::Run(const char* address, int port) { const int read_modes = SRT_EPOLL_IN | SRT_EPOLL_ERR; srt_epoll_add_usock(epoll, srt_sock, &read_modes); - srt_listen_callback(srt_sock, - (srt_listen_callback_fn*)&Server::ListenAcceptCallback, - (void*)this); running.store(true); diff --git a/examples/server.exs b/examples/server.exs index 0bc9649..a690cc7 100644 --- a/examples/server.exs +++ b/examples/server.exs @@ -1,5 +1,4 @@ -Mix.install([{:ex_libsrt, path: "../ex_libsrt"}]) - +Mix.install([{:ex_libsrt, path: "../"}]) defmodule Server do use GenServer @@ -19,7 +18,9 @@ defmodule Server do @impl true def handle_info({:srt_server_connect_request, address, stream_id}, state) do - Logger.info("Receiving new connection request with stream id: #{stream_id} from address: #{address}") + Logger.info( + "Receiving new connection request with stream id: #{stream_id} from address: #{address}" + ) :ok = ExLibSRT.Server.accept_awaiting_connect_request(state.server) @@ -64,15 +65,11 @@ receive do end # Process.sleep(2_000) -# for _i <- 1..10_000 do payload = :crypto.strong_rand_bytes(1200) - :ok = ExLibSRT.Client.send_data(payload, client) end - - Process.sleep(5000) ExLibSRT.Client.stop(client) @@ -80,4 +77,3 @@ ExLibSRT.Client.stop(client) Process.sleep(1000) GenServer.stop(server) - From 77db53de422eb64b049b5ac5e23952c6fec03a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kita?= Date: Tue, 22 Apr 2025 11:05:36 +0200 Subject: [PATCH 2/2] Fix formatting of server.cpp --- c_src/ex_libsrt/server/server.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/c_src/ex_libsrt/server/server.cpp b/c_src/ex_libsrt/server/server.cpp index 37dd24f..64cf779 100644 --- a/c_src/ex_libsrt/server/server.cpp +++ b/c_src/ex_libsrt/server/server.cpp @@ -44,7 +44,6 @@ void Server::Run(const char* address, int port) { const int read_modes = SRT_EPOLL_IN | SRT_EPOLL_ERR; srt_epoll_add_usock(epoll, srt_sock, &read_modes); - running.store(true); epoll_loop = std::thread(&Server::RunEpoll, this);