After the first session, the server does not accept any further connections correctly. This was bisected to the changes made by r778 and r779. The client revision doesn't matter, only the server.
With some debugging I have determined that on _process_connection_lost that _clear_keys_pressed and unpress_all_keys never returns.
r778 made it so that the process_packet(CONNECT_LOST) can run on any of 3 threads (read/writer/main).
There are two possible fixes:
1) change all calls to self.close() in protocol to run via idle_add (like _read_parse_thread_loop does),
2) I think the better fix is to invoke _process_packet_cb using idle_add in close(). A proposed patch is included.
applied in r876 - thanks!
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/129