projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
connection_t: allocate legacy context on first use
[tinc]
/
src
/
meta.c
diff --git
a/src/meta.c
b/src/meta.c
index
f6a9ba1
..
0ff7bef
100644
(file)
--- a/
src/meta.c
+++ b/
src/meta.c
@@
-21,6
+21,8
@@
#include "system.h"
#include "system.h"
+#include <assert.h>
+
#include "cipher.h"
#include "connection.h"
#include "logger.h"
#include "cipher.h"
#include "connection.h"
#include "logger.h"
@@
-56,8
+58,8
@@
bool send_meta(connection_t *c, const void *buffer, size_t length) {
abort();
}
abort();
}
- logger(DEBUG_META, LOG_DEBUG, "Sending %
z
u bytes of metadata to %s (%s)",
- length, c->name, c->hostname);
+ logger(DEBUG_META, LOG_DEBUG, "Sending %
l
u bytes of metadata to %s (%s)",
+
(unsigned long)
length, c->name, c->hostname);
if(c->protocol_minor >= 2) {
return sptps_send_record(&c->sptps, 0, buffer, length);
if(c->protocol_minor >= 2) {
return sptps_send_record(&c->sptps, 0, buffer, length);
@@
-68,17
+70,16
@@
bool send_meta(connection_t *c, const void *buffer, size_t length) {
#ifdef DISABLE_LEGACY
return false;
#else
#ifdef DISABLE_LEGACY
return false;
#else
+ assert(c->legacy);
- if(
length > c->outbudget
) {
+ if(
!decrease_budget(&c->legacy->out, length)
) {
logger(DEBUG_META, LOG_ERR, "Byte limit exceeded for encryption to %s (%s)", c->name, c->hostname);
return false;
logger(DEBUG_META, LOG_ERR, "Byte limit exceeded for encryption to %s (%s)", c->name, c->hostname);
return false;
- } else {
- c->outbudget -= length;
}
size_t outlen = length;
}
size_t outlen = length;
- if(!cipher_encrypt(&c->
out
cipher, buffer, length, buffer_prepare(&c->outbuf, length), &outlen, false) || outlen != length) {
+ if(!cipher_encrypt(&c->
legacy->out.
cipher, buffer, length, buffer_prepare(&c->outbuf, length), &outlen, false) || outlen != length) {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while encrypting metadata to %s (%s)",
c->name, c->hostname);
return false;
logger(DEBUG_ALWAYS, LOG_ERR, "Error while encrypting metadata to %s (%s)",
c->name, c->hostname);
return false;
@@
-100,8
+101,8
@@
void send_meta_raw(connection_t *c, const void *buffer, size_t length) {
abort();
}
abort();
}
- logger(DEBUG_META, LOG_DEBUG, "Sending %
z
u bytes of raw metadata to %s (%s)",
- length, c->name, c->hostname);
+ logger(DEBUG_META, LOG_DEBUG, "Sending %
l
u bytes of raw metadata to %s (%s)",
+
(unsigned long)
length, c->name, c->hostname);
buffer_add(&c->outbuf, buffer, length);
buffer_add(&c->outbuf, buffer, length);
@@
-248,17
+249,16
@@
bool receive_meta(connection_t *c) {
#ifdef DISABLE_LEGACY
return false;
#else
#ifdef DISABLE_LEGACY
return false;
#else
+ assert(c->legacy);
- if(
(size_t)inlen > c->inbudget
) {
+ if(
!decrease_budget(&c->legacy->in, (size_t) inlen)
) {
logger(DEBUG_META, LOG_ERR, "Byte limit exceeded for decryption from %s (%s)", c->name, c->hostname);
return false;
logger(DEBUG_META, LOG_ERR, "Byte limit exceeded for decryption from %s (%s)", c->name, c->hostname);
return false;
- } else {
- c->inbudget -= inlen;
}
size_t outlen = inlen;
}
size_t outlen = inlen;
- if(!cipher_decrypt(&c->
in
cipher, bufp, inlen, buffer_prepare(&c->inbuf, inlen), &outlen, false) || (size_t)inlen != outlen) {
+ if(!cipher_decrypt(&c->
legacy->in.
cipher, bufp, inlen, buffer_prepare(&c->inbuf, inlen), &outlen, false) || (size_t)inlen != outlen) {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while decrypting metadata from %s (%s)",
c->name, c->hostname);
return false;
logger(DEBUG_ALWAYS, LOG_ERR, "Error while decrypting metadata from %s (%s)",
c->name, c->hostname);
return false;