#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;
}