if (st->fd >= 0) {
shutdown(st->fd, SHUT_RDWR);
close(st->fd);
+ st->fd = -1;
}
sfree(st->name);
}
/* Wait until connection establishes */
- struct pollfd pollfd;
- pollfd.fd = fd;
- pollfd.events = POLLOUT;
+ struct pollfd pollfd = {
+ .fd = fd, .events = POLLOUT,
+ };
do
status = poll(&pollfd, 1, MEMCACHED_CONNECT_TIMEOUT);
while (status < 0 && errno == EINTR);
/* Check if all is good */
int socket_error;
- socklen_t socket_error_len = sizeof(socket_error);
status = getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&socket_error,
- &socket_error_len);
+ &(socklen_t){sizeof(socket_error)});
if (status != 0 || socket_error != 0) {
close(fd);
fd = -1;
return -1;
}
- struct pollfd pollfd;
- pollfd.fd = st->fd;
- pollfd.events = POLLOUT;
+ struct pollfd pollfd = {
+ .fd = st->fd, .events = POLLOUT,
+ };
do
status = poll(&pollfd, 1, MEMCACHED_IO_TIMEOUT);
} else if (FIELD_IS("listen_disabled_num")) {
submit_derive("connections", "listen_disabled", atof(fields[2]), st);
}
+ /*
+ * Total number of connections opened since the server started running
+ * Report this as connection rate.
+ */
+ else if (FIELD_IS("total_connections")) {
+ submit_derive("connections", "opened", atof(fields[2]), st);
+ }
/*
* Commands