diff --git a/recording-daemon/forward.c b/recording-daemon/forward.c index 45cec2309..01b1d1dd7 100644 --- a/recording-daemon/forward.c +++ b/recording-daemon/forward.c @@ -66,11 +66,9 @@ int forward_packet(metafile_t *mf, unsigned char *buf, unsigned len) { goto err; } - free(buf); return 0; err: - free(buf); return -1; } diff --git a/recording-daemon/stream.c b/recording-daemon/stream.c index 9b5377def..b6b40d17b 100644 --- a/recording-daemon/stream.c +++ b/recording-daemon/stream.c @@ -68,14 +68,18 @@ static void stream_handler(handler_t *handler) { // got a packet pthread_mutex_unlock(&stream->lock); - if (output_enabled) - packet_process(stream, buf, ret); + if (forward_to){ - if (forward_packet(stream->metafile,buf,ret)) + if (forward_packet(stream->metafile,buf,ret)) // leaves buf intact g_atomic_int_inc(&stream->metafile->forward_failed); else g_atomic_int_inc(&stream->metafile->forward_count); } + if (output_enabled) + packet_process(stream, buf, ret); // consumes buf + else + free(buf); + log_info_call = NULL; log_info_stream = NULL; return;