projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introducing the Big Tinc Lock.
[tinc]
/
src
/
meta.c
diff --git
a/src/meta.c
b/src/meta.c
index
43e1e19
..
b556e17
100644
(file)
--- a/
src/meta.c
+++ b/
src/meta.c
@@
-77,7
+77,9
@@
static bool process_meta(connection_t *c, char *reqbuf, int *len) {
if(c->tcplen > *len)
break;
if(c->tcplen > *len)
break;
+ mutex_lock(&mutex);
receive_tcppacket(c, reqbuf, c->tcplen);
receive_tcppacket(c, reqbuf, c->tcplen);
+ mutex_unlock(&mutex);
memmove(reqbuf, reqbuf, *len - c->tcplen);
*len -= c->tcplen;
memmove(reqbuf, reqbuf, *len - c->tcplen);
*len -= c->tcplen;
@@
-88,7
+90,11
@@
static bool process_meta(connection_t *c, char *reqbuf, int *len) {
else
*end++ = 0;
else
*end++ = 0;
- if(!receive_request(c, reqbuf))
+ mutex_lock(&mutex);
+ bool success = receive_request(c, reqbuf);
+ mutex_unlock(&mutex);
+
+ if(!success)
return false;
memmove(reqbuf, end, *len - (end - reqbuf));
return false;
memmove(reqbuf, end, *len - (end - reqbuf));