Flush output buffer in send_tcppacket().
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 17 Jul 2011 17:34:01 +0000 (19:34 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 17 Jul 2011 17:34:01 +0000 (19:34 +0200)
This is mainly important for Windows, where the select() call in the
main thread is not being woken up when the tapreader thread calls
route(), causing a delay of up to 1 second before the output buffer is
flushed. This would cause bad performance when UDP communication is not
possible.

src/protocol_misc.c

index 6f7ab03..3d405bc 100644 (file)
@@ -129,7 +129,7 @@ bool send_tcppacket(connection_t *c, const vpn_packet_t *packet) {
        if(!send_request(c, "%d %hd", PACKET, packet->len))
                return false;
 
        if(!send_request(c, "%d %hd", PACKET, packet->len))
                return false;
 
-       return send_meta(c, (char *)packet->data, packet->len);
+       return send_meta(c, (char *)packet->data, packet->len) && flush_meta(c);
 }
 
 bool tcppacket_h(connection_t *c) {
 }
 
 bool tcppacket_h(connection_t *c) {