projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Convert sizeof foo to sizeof(foo).
[tinc]
/
src
/
proxy.c
diff --git
a/src/proxy.c
b/src/proxy.c
index
e30c1fb
..
75e41de
100644
(file)
--- a/
src/proxy.c
+++ b/
src/proxy.c
@@
-1,6
+1,6
@@
/*
proxy.c -- Proxy handling functions.
/*
proxy.c -- Proxy handling functions.
- Copyright (C) 2015 Guus Sliepen <guus@tinc-vpn.org>
+ Copyright (C) 2015
-2017
Guus Sliepen <guus@tinc-vpn.org>
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
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);
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));
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);
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));
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;
strcpy(s4req + 8, proxyuser);
else
s4req[8] = 0;
- s4req[sizeof
s4req
- 1] = 0;
+ s4req[sizeof
(s4req)
- 1] = 0;
c->allow_request = PROXY;
c->allow_request = PROXY;
- return send_meta(c, s4req, sizeof
s4req
);
+ return send_meta(c, s4req, sizeof
(s4req)
);
}
case PROXY_SOCKS5: {
}
case PROXY_SOCKS5: {
@@
-158,7
+158,7
@@
bool send_proxyrequest(connection_t *c) {
if(i > len)
abort();
c->allow_request = PROXY;
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: {
}
case PROXY_HTTP: {
@@
-174,7
+174,7
@@
bool send_proxyrequest(connection_t *c) {
}
case PROXY_EXEC:
}
case PROXY_EXEC:
-
return true
;
+
abort()
;
default:
logger(LOG_ERR, "Unknown proxy type");
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;
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");
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;
} else {
ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Proxy request granted");
c->allow_request = ID;
+ c->status.proxy_passed = true;
+ send_id(c);
return replen;
}
return replen;
}
@@
-256,7
+260,12
@@
int receive_proxy_meta(connection_t *c, int start, int lenin) {
char *p = memchr(c->buffer, '\n', c->buflen);
if(!p || p - c->buffer >= c->buflen)
return 0;
char *p = memchr(c->buffer, '\n', c->buflen);
if(!p || p - c->buffer >= c->buflen)
return 0;
- p = memchr(p + 1, '\n', c->buflen - (p + 1 - c->buffer));
+
+ while((p = memchr(p + 1, '\n', c->buflen - (p + 1 - c->buffer)))) {
+ if(p > c->buffer + 3 && !memcmp(p - 3, "\r\n\r\n", 4))
+ break;
+ }
+
if(!p)
return 0;
if(!p)
return 0;
@@
-270,8
+279,12
@@
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;
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 {
return replen;
} else {
+ p = memchr(c->buffer, '\n', c->buflen);
+ p[-1] = 0;
logger(LOG_ERR, "Proxy request rejected: %s", c->buffer + 9);
return false;
}
logger(LOG_ERR, "Proxy request rejected: %s", c->buffer + 9);
return false;
}