]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
Zero wbuf on start.
authorClar Fon <them@lightdark.xyz>
Sun, 25 Aug 2019 23:18:47 +0000 (19:18 -0400)
committerTobias Oetiker <tobi@oetiker.ch>
Mon, 26 Aug 2019 06:05:52 +0000 (08:05 +0200)
It turns out that calloc isn't enough, because listen_fds is copied to the socket array on start. This zeroes these fields out when the socket is opened.

src/rrd_daemon.c

index 5a7ed28140c117ff749e4bc37869635c86908039..c04829fb4645cf85fd0f4e87ba1598e72268c24b 100644 (file)
@@ -3775,6 +3775,9 @@ static int open_listen_socket_unix(
         return (-1);
     }
 
+    listen_fds[listen_fds_num].wbuf_data = NULL;
+    listen_fds[listen_fds_num].wbuf_size = 0;
+    listen_fds[listen_fds_num].wbuf_capacity = 0;
     listen_fds[listen_fds_num].fd = fd;
     listen_fds[listen_fds_num].family = PF_UNIX;
     listen_fds[listen_fds_num].addr = strdup(path);
@@ -3930,6 +3933,9 @@ static int open_listen_socket_network(
             return (-1);
         }
 
+        listen_fds[listen_fds_num].wbuf_data = NULL;
+        listen_fds[listen_fds_num].wbuf_size = 0;
+        listen_fds[listen_fds_num].wbuf_capacity = 0;
         listen_fds[listen_fds_num].fd = fd;
         listen_fds[listen_fds_num].family = ai_ptr->ai_family;
         listen_fds[listen_fds_num].addr = strdup(sock->addr);
@@ -4009,6 +4015,9 @@ static int open_listen_sockets_systemd(
             return i;
         }
 
+        listen_fds[listen_fds_num].wbuf_data = NULL;
+        listen_fds[listen_fds_num].wbuf_size = 0;
+        listen_fds[listen_fds_num].wbuf_capacity = 0;
         listen_fds[listen_fds_num].fd = sd_fd;
         listen_fds[listen_fds_num].family = sa.sun_family;
         /* Add permissions to the socket */