When we moved the clients[] array into oserver, we didn't initialize it.
Before, it was a static, so implicitly set to NULL.
- * Ccanlint:
- * // hack to make valgrind show the error. FIXME!
- * tests_pass_valgrind --child-silent-after-fork=no
- *
* Example:
* #include <sys/types.h>
* #include <sys/socket.h>
* Example:
* #include <sys/types.h>
* #include <sys/socket.h>
tevent_fd_set_flags(oserver->fde, 0);
}
tevent_fd_set_flags(oserver->fde, 0);
}
+static void clear_clients(struct oserver *oserver)
+{
+ memset(oserver->clients, 0,
+ ARRAY_SIZE(oserver->clients) * sizeof(oserver->clients[0]));
+}
+
static int destroy_oserver(struct oserver *oserver)
{
close(oserver->fd);
static int destroy_oserver(struct oserver *oserver)
{
close(oserver->fd);
} u;
oserver = talloc(ev, struct oserver);
} u;
oserver = talloc(ev, struct oserver);
+ clear_clients(oserver);
oserver->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (oserver->fd < 0) {
talloc_free(oserver);
return NULL;
}
oserver->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (oserver->fd < 0) {
talloc_free(oserver);
return NULL;
}
talloc_set_destructor(oserver, destroy_oserver);
if (setsockopt(oserver->fd, SOL_SOCKET, SO_REUSEADDR,
talloc_set_destructor(oserver, destroy_oserver);
if (setsockopt(oserver->fd, SOL_SOCKET, SO_REUSEADDR,