membraneframework / membrane_core

The core of the Membrane Framework, multimedia processing framework written in Elixir
https://membrane.stream
Apache License 2.0
1.29k stars 36 forks source link

`TCP.Sink` with `connection_side: :client` does not work #760

Closed wkozyra95 closed 7 months ago

wkozyra95 commented 7 months ago

Element was created with

 %TCP.Sink{
    connection_side: :client,
    server_port_no: input_port,
    server_address: @local_host
 }

Local unconnected socket is created here https://github.com/membraneframework/membrane_tcp_plugin/blob/master/lib/membrane_tcp/socket.ex#L34

but it failes here https://github.com/membraneframework/membrane_tcp_plugin/blob/master/lib/membrane_tcp/socket.ex#L54

If I understand correctlly implementation is assuming that already connected socket was already passed there. It looks like server_port_no and server_address options are never used

** (Membrane.ParentError) Error starting child {:tcp_sink, 0}, reason: {:function_clause, [{:prim_inet, :peername, [nil], []}, {Membrane.TCP.Socket, :create_socket_pair, 2, [file: ~c"lib/membrane_tcp/socket.ex", line: 54]}, {Membrane.TCP.Sink, :handle_init, 2, [file: ~c"lib/membrane_tcp/sink.ex", line: 63]}, {Membrane.Core.CallbackHandler, :exec_callback, 4, [file: ~c"lib/membrane/core/callback_handler.ex", line: 139]}, {Membrane.Core.CallbackHandler, :exec_and_handle_callback, 5, [file: ~c"lib/membrane/core/callback_handler.ex", line: 69]}, {Membrane.Core.Element, :init, 1, [file: ~c"lib/membrane/core/element.ex", line: 166]}, {:gen_server, :init_it, 2, [file: ~c"gen_server.erl", line: 980]}, {:gen_server, :init_it, 6, [file: ~c"gen_server.erl", line: 935]}]}
    (membrane_core 1.0.0) lib/membrane/core/parent/child_life_controller/startup_utils.ex:225: Membrane.Core.Parent.ChildLifeController.StartupUtils.start_child/6
    (elixir 1.16.0) lib/enum.ex:1700: Enum."-map/2-lists^map/1-1-"/2
    (elixir 1.16.0) lib/enum.ex:1700: Enum."-map/2-lists^map/1-1-"/2
    (membrane_core 1.0.0) lib/membrane/core/parent/child_life_controller.ex:253: Membrane.Core.Parent.ChildLifeController.setup_children/3
    (elixir 1.16.0) lib/enum.ex:1301: anonymous fn/3 in Enum.flat_map_reduce/3
    (elixir 1.16.0) lib/enum.ex:4842: Enumerable.List.reduce/3
    (elixir 1.16.0) lib/enum.ex:1300: Enum.flat_map_reduce/3