xpra icon
Bug tracker and wiki

Opened 5 years ago

Closed 5 years ago

#156 closed defect (fixed)

large clipboard packets cause the connection to drop

Reported by: Martin Ebourne Owned by: Antoine Martin
Priority: major Milestone: 0.4
Component: core Version: trunk
Keywords: Cc:

Description (last modified by Antoine Martin)

I cut-n-paste a page of html from firefox running locally to evolution running over xpra, it consistently crashes the xpra client:

Attached (press Control-C to detach)
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/proxy.py", line 25, in _to_client_loop
    self._copy_loop("<-server", self._server_conn, self._client_conn)
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/proxy.py", line 35, in _copy_loop
    buf = from_conn.read(4096)
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/protocol.py", line 68, in read
    return self._s.recv(n)
error: [Errno 104] Connection reset by peer

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/proxy.py", line 29, in _to_server_loop
    self._copy_loop("->server", self._client_conn, self._server_conn)
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/proxy.py", line 42, in _copy_loop
    buf = buf[to_conn.write(buf):]
  File "/home/martin/stuff/xpra/Xpra/trunk/src/install/lib/python/xpra/protocol.py", line 71, in write
    return self._s.send(buf)
error: [Errno 32] Broken pipe

Connection lost

On the server log it says:

connection lost: read buffer too big: 40960 (maximum is 32768), dropping this connection!
Connection lost
xpra client disconnected.

I am running r990 both ends.

Change History (4)

comment:1 Changed 5 years ago by Antoine Martin

Description: modified (diff)
Status: newaccepted
Summary: Crashes when pasting chunk of htmllarge clipboard packets cause the connection to drop

Thanks very much for the detailed bug report!

This bug was introduced by r784 (see #68): we set a maximum packet size for client packets, and your clipboard packet is bigger than that... (something I never tested)

The fix in r994 is to increase the maximum client packet size to 1MB and to force zlib compression on those clipboard packets.
I am unsure whether it makes sense to allow anything bigger than 1MB as clipboard contents over the network... I guess that if we do not, what we should do is drop the clipboard contents rather than the connection!
(so keeping this ticket open for now)

comment:2 Changed 5 years ago by Martin Ebourne

Thx for the fix, will try it out.

Cut-n-paste of screen shots/images would exceed 1MB perhaps? I don't generally do this over remote, but certainly do locally and seems reasonable to allow it.

comment:3 Changed 5 years ago by Martin Ebourne

Confirming fix works for me.

comment:4 Changed 5 years ago by Antoine Martin

Resolution: fixed
Status: acceptedclosed

Fixed properly:

We will drop the packets before they cause problems.
0.5 and later do this after compressing the clipboard packet whereas earlier versions cannot (and therefore their clipboard packet limit will be lower)

Note: See TracTickets for help on using tickets.