[Lldb-commits] [lldb] [lldb] Updated TCPSocket to listen multiple ports on the same single thread (PR #104797)
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Thu Aug 29 04:34:54 PDT 2024
labath wrote:
> @labath
>
> > Having a single socket listen on multiple ports sounds like a bad idea to me.
>
> Note that currently the class TCPSocket already contains a list of NativeSocket `m_listen_sockets`.
I am aware of that, and I'm not entirely happy with how the class implements listening. I think it would be better to have a separate class for a listening socket, because those need a completely different APIs. But, even ignoring that, I think there's a difference between listening on two addresses with the same port (I believe the only way to reach that state is if a hostname resolves to multiple addresses, in which case one really could argue that it's the same "logical" address), and two addresses with completely unrelated ports.
> We do not need 2 TCPSocket instances with 2 separated lists of native sockets even with a common MainLoop.
>
> We have 2 options:
>
> * A) 2 threads - first one calls TCPSocket::Accept() for the platform connection, second calls TCPSocket::Accept() for the gdb connection
>
> * B) 1 thread - a common TCPSocket::Accept() can accept platform and gdb connections from both ports
We have (at least) three options, the third one being what I outlined in the previous message. I'm sorry this work of yours is going to waste. I could've been more explicit about what I wanted to do on the first PR, but I was more focused on what I don't want to do.
>
>
> I have implemented the option B. It was easy because the class TCPSocket already contains `m_listen_sockets`.
>
> > Then we could create two sockets and have them listen on the same main loop instance.
>
> It is already implemented inside TCPSocket but for different addresses.
That's true, but I draw a different conclusion from that. Instead of saying "this should be extended to support multiple ports", my take is that "this wasn't a good place for multiplexing to begin with".
> I just added different ports.
>
> The changes are minimal really.
Yes, but that's because you extended a stringly typed api to do that you wanted. That function is used from other places as well, and this means that other places in lldb (including user-facing code, I believe) can accept these multi-port connection strings. I don't think we want to support that.
https://github.com/llvm/llvm-project/pull/104797
More information about the lldb-commits
mailing list