launcher: start the protocol so the client reads the server's replies#4941
Conversation
The GTK launcher's built-in connection path (do_start_xpra_client) calls make_protocol() but never calls protocol.start(). make_protocol() builds the SocketProtocol and schedules send_hello(), but the network read thread is only started by protocol.start() — which the command-line client does explicitly (xpra/scripts/main.py) while the launcher does not. As a result a client started from the launcher sends its hello but never reads anything back: the connection shows "network connection established" and then times out with "0 packets received" on every transport (tcp, ssl, quic). This regressed in 25d6e80, which split make_protocol() out of setup_connection() and moved the start() responsibility to the callers; the command-line callers were updated but the launcher was missed. Call protocol.start() after make_protocol(), matching the command-line client. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Sponsored-By: Netflix
|
Thanks! |
|
@totaam thanks for the quick triage. #4938 does address the same underlying symptom (the protocol never gets started → All of the #4938 commits touch
None of them touch self.client.make_protocol(conn)
self.set_info_text("Network connection established")i.e. no This PR's one-liner calls Would you reconsider this PR (or fold the launcher fix into #4938)? Happy to rebase onto master/v6.5.x, or rework it to lean on the idempotent |
|
My bad, I thought that the earlier commit had fixed both! |
The GTK launcher's built-in connection path (
do_start_xpra_client) callsmake_protocol()but never callsprotocol.start().make_protocol()builds theSocketProtocoland schedulessend_hello(), but the network read thread is only started byprotocol.start()— which the command-line client does explicitly (xpra/scripts/main.py) while the launcher does not.As a result, a client started from the GTK launcher sends its hello but never reads anything back: the connection reports "network connection established" and then times out with "0 packets received" on every transport (tcp, ssl, quic).
This regressed in 25d6e80, which split
make_protocol()out ofsetup_connection()and moved thestart()responsibility to the callers; the command-line callers were updated but the launcher was missed.The fix calls
protocol.start()aftermake_protocol(), matching the command-line client. Verified on Windows (GTK launcher, built-in connect): with this change the launcher connects over both tcp and quic; without it the client hangs after "network connection established".Sponsored-By: Netflix