Flush data on close

There might be some final handshake data that is still stuck in the
buffers, so make a best effort attempt at getting it to the client.
pull/36/head
Pierre Ossman 5 years ago committed by Lauri Kasanen
parent a3c0ce55c9
commit c5b7137f2b

@ -155,6 +155,17 @@ void VNCSConnectionST::close(const char* reason)
server->lastDisconnectTime = time(0);
}
try {
if (sock->outStream().bufferUsage() > 0) {
sock->cork(false);
sock->outStream().flush();
if (sock->outStream().bufferUsage() > 0)
vlog.error("Failed to flush remaining socket data on close");
}
} catch (rdr::Exception& e) {
vlog.error("Failed to flush remaining socket data on close: %s", e.str());
}
// Just shutdown the socket and mark our state as closing. Eventually the
// calling code will call VNCServerST's removeSocket() method causing us to
// be deleted.

Loading…
Cancel
Save