mirror of https://github.com/omar-polo/gmid.git
[debug] print number of connected clients on SIGINFO
or SIGUSR2 for poor peoples
This commit is contained in:
parent
aff8d19010
commit
120381c93d
26
gmid.c
26
gmid.c
|
@ -110,6 +110,9 @@ struct etm { /* file extension to mime */
|
|||
const char *dir;
|
||||
int dirfd, logfd;
|
||||
int cgi;
|
||||
int connected_clients;
|
||||
|
||||
void siginfo_handler(int);
|
||||
|
||||
char *url_after_proto(char*);
|
||||
char *url_start_of_request(char*);
|
||||
|
@ -138,6 +141,12 @@ void loop(struct tls*, int);
|
|||
|
||||
void usage(const char*);
|
||||
|
||||
void
|
||||
siginfo_handler(int sig)
|
||||
{
|
||||
(void)sig;
|
||||
}
|
||||
|
||||
char *
|
||||
url_after_proto(char *url)
|
||||
{
|
||||
|
@ -760,6 +769,7 @@ do_accept(int sock, struct tls *ctx, struct pollfd *fds, struct client *clients)
|
|||
clients[i].af = AF_INET;
|
||||
clients[i].addr = addr.sin_addr;
|
||||
|
||||
connected_clients++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -784,6 +794,8 @@ goodbye(struct pollfd *pfd, struct client *c)
|
|||
return;
|
||||
}
|
||||
|
||||
connected_clients--;
|
||||
|
||||
tls_free(c->ctx);
|
||||
c->ctx = NULL;
|
||||
|
||||
|
@ -813,8 +825,13 @@ loop(struct tls *ctx, int sock)
|
|||
fds[0].fd = sock;
|
||||
|
||||
for (;;) {
|
||||
if ((todo = poll(fds, MAX_USERS, INFTIM)) == -1)
|
||||
if ((todo = poll(fds, MAX_USERS, INFTIM)) == -1) {
|
||||
if (errno == EINTR) {
|
||||
warnx("connected clients: %d", connected_clients);
|
||||
continue;
|
||||
}
|
||||
err(1, "poll");
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_USERS; i++) {
|
||||
assert(i < MAX_USERS);
|
||||
|
@ -865,6 +882,13 @@ main(int argc, char **argv)
|
|||
signal(SIGPIPE, SIG_IGN);
|
||||
signal(SIGCHLD, SIG_IGN);
|
||||
|
||||
#ifdef SIGINFO
|
||||
signal(SIGINFO, siginfo_handler);
|
||||
#endif
|
||||
signal(SIGUSR2, siginfo_handler);
|
||||
|
||||
connected_clients = 0;
|
||||
|
||||
dir = "docs/";
|
||||
logfd = 2; /* stderr */
|
||||
cgi = 0;
|
||||
|
|
Loading…
Reference in New Issue