#include "system.h"
#ifdef HAVE_ZLIB
+#define ZLIB_CONST
#include <zlib.h>
#endif
if(!n->status.udp_confirmed) {
n->status.udp_confirmed = true;
fprintf(stderr, "Updating address cache...\n");
- if (!n->address_cache)
+
+ if(!n->address_cache) {
n->address_cache = open_address_cache(n);
+ }
+
reset_address_cache(n->address_cache, &n->address);
}
#ifdef HAVE_ZLIB
else {
unsigned long destlen = MAXSIZE;
+ static z_stream stream;
- if(uncompress(dest, &destlen, source, len) == Z_OK) {
- return destlen;
+ if(stream.next_in) {
+ inflateReset(&stream);
+ } else {
+ inflateInit(&stream);
+ }
+
+ stream.next_in = source;
+ stream.avail_in = len;
+ stream.next_out = dest;
+ stream.avail_out = destlen;
+ stream.total_out = 0;
+
+ if(inflate(&stream, Z_FINISH) == Z_STREAM_END) {
+ return stream.total_out;
} else {
return -1;
}
if(relay_supported) {
if(direct) {
/* Inform the recipient that this packet was sent directly. */
- node_id_t nullid = {};
+ node_id_t nullid = {{0}};
memcpy(buf_ptr, &nullid, sizeof(nullid));
buf_ptr += sizeof(nullid);
} else {
static void handle_incoming_vpn_packet(listen_socket_t *ls, vpn_packet_t *pkt, sockaddr_t *addr) {
char *hostname;
- node_id_t nullid = {};
+ node_id_t nullid = {{0}};
node_t *from, *to;
bool direct = false;