X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol_misc.c;h=0b893a677a653403aa59dd22aa5535ddfd62c0ed;hp=ea71d6bfbc0e81217b9a9b815413d0647e5d4dee;hb=af95368c0f30955f0e13b587d5d6d4989fd5a83e;hpb=df3220a1549f992cbf4a9b6e67c1e67b69896c7d diff --git a/src/protocol_misc.c b/src/protocol_misc.c index ea71d6bf..0b893a67 100644 --- a/src/protocol_misc.c +++ b/src/protocol_misc.c @@ -31,6 +31,8 @@ #include "protocol.h" #include "utils.h" +int maxoutbufsize = 0; + /* Status and error notification routines */ bool send_status(connection_t *c, int statusno, const char *statusstring) @@ -153,12 +155,15 @@ bool send_tcppacket(connection_t *c, vpn_packet_t *packet) { cp(); - /* Evil hack. */ + /* If there already is a lot of data in the outbuf buffer, discard this packet. */ + + if(c->outbuflen > maxoutbufsize) + return true; if(!send_request(c, "%d %hd", PACKET, packet->len)) return false; - return send_meta(c, packet->data, packet->len); + return send_meta(c, (char *)packet->data, packet->len); } bool tcppacket_h(connection_t *c)