X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fproxy.c;h=75e41ded306a2beb6d721d81d6232ffa2c4dcedd;hp=227be4a5e1cc6882021272f26785730a2842ba8a;hb=985d19caf20058db3c764f0f6fbeafa8bcc59fcc;hpb=f2835ed9f5b4fbbaa453b6968dbf82e0afcbff3a diff --git a/src/proxy.c b/src/proxy.c index 227be4a5..75e41ded 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1,6 +1,6 @@ /* proxy.c -- Proxy handling functions. - Copyright (C) 2015 Guus Sliepen + Copyright (C) 2015-2017 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ char *proxypass; static void update_address_ipv4(connection_t *c, void *address, void *port) { sockaddrfree(&c->address); - memset(&c->address, 0, sizeof c->address); + memset(&c->address, 0, sizeof(c->address)); c->address.sa.sa_family = AF_INET; if(address) memcpy(&c->address.in.sin_addr, address, sizeof(ipv4_t)); @@ -48,7 +48,7 @@ static void update_address_ipv4(connection_t *c, void *address, void *port) { static void update_address_ipv6(connection_t *c, void *address, void *port) { sockaddrfree(&c->address); - memset(&c->address, 0, sizeof c->address); + memset(&c->address, 0, sizeof(c->address)); c->address.sa.sa_family = AF_INET6; if(address) memcpy(&c->address.in6.sin6_addr, address, sizeof(ipv6_t)); @@ -92,9 +92,9 @@ bool send_proxyrequest(connection_t *c) { strcpy(s4req + 8, proxyuser); else s4req[8] = 0; - s4req[sizeof s4req - 1] = 0; + s4req[sizeof(s4req) - 1] = 0; c->allow_request = PROXY; - return send_meta(c, s4req, sizeof s4req); + return send_meta(c, s4req, sizeof(s4req)); } case PROXY_SOCKS5: { @@ -158,7 +158,7 @@ bool send_proxyrequest(connection_t *c) { if(i > len) abort(); c->allow_request = PROXY; - return send_meta(c, s5req, sizeof s5req); + return send_meta(c, s5req, sizeof(s5req)); } case PROXY_HTTP: { @@ -174,7 +174,7 @@ bool send_proxyrequest(connection_t *c) { } case PROXY_EXEC: - return true; + abort(); default: logger(LOG_ERR, "Unknown proxy type"); @@ -194,6 +194,8 @@ int receive_proxy_meta(connection_t *c, int start, int lenin) { ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Proxy request granted"); c->allow_request = ID; + c->status.proxy_passed = true; + send_id(c); return 8; } else { logger(LOG_ERR, "Proxy request rejected"); @@ -249,6 +251,8 @@ int receive_proxy_meta(connection_t *c, int start, int lenin) { } else { ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Proxy request granted"); c->allow_request = ID; + c->status.proxy_passed = true; + send_id(c); return replen; } @@ -275,6 +279,8 @@ int receive_proxy_meta(connection_t *c, int start, int lenin) { logger(LOG_DEBUG, "Proxy request granted"); replen = p + 1 - c->buffer; c->allow_request = ID; + c->status.proxy_passed = true; + send_id(c); return replen; } else { p = memchr(c->buffer, '\n', c->buflen);