[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/2] vchan-socket-proxy: add reconnect marker support



On Mon, Sep 5, 2022 at 9:50 AM Marek Marczykowski-Górecki
<marmarek@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> When vchan client reconnect quickly, the server may not notice it. This
> means, it won't reconnect the UNIX socket either. For QMP, it will
> prevent the client to see the QMP protocol handshake, and the
> communication will timeout.
> Solve the issue by sending in-band connect marker. Whenever server sees
> one (elsewhere than the first byte in the connection), handle it as a
> client had reconnected. The marker is a one byte, and the user need to
> choose something that doesn't appear in the data stream elsewhere.
>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>

Reviewed-by: Jason Andryuk <jandryuk@xxxxxxxxx>

Here are some of my thoughts on the correctness of this approach:
The QMP data is json - ascii (utf-8?) - so using \x01 is fine as it
won't be in the data stream.  The dropping of any partial message
works since the close and re-open of the QMP socket resets the data
stream.  There shouldn't be any partial data in vchan-socket-proxy to
drop since the client side should not have sent any new data before it
closed and re-opened.  If there is partial data, we shouldn't send it
into QEMU since the new QMP client isn't expecting any response it
would generate.  So that all seems okay.

Regards,
Jason



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.