Project

General

Profile

Bug #3940 » check_reload_status.patch

Renato Botelho, 10/30/2014 07:47 AM

View differences:

pfPorts/check_reload_status/files/check_reload_status.c
static void set_blockmode(int socket, int cmd);
struct command * match_command(struct command *target, char *wordpassed);
struct command * parse_command(int fd, int argc, char **argv);
static void socket_read_command(int socket, short event, void *arg);
static void socket_read_command(int socket);
static void show_command_list(int fd, const struct command *list);
static void socket_accept_command(int socket, short event, void *arg);
static void socket_close_command(int fd, struct event *ev);
static void socket_read_fcgi(int, short, void *);
static void fcgi_send_command(int, short, void *);
static int fcgi_open_socket(struct runq *);
......
}
static void
socket_close_command(int fd, struct event *ev)
{
event_del(ev);
free(ev);
close(fd);
}
static void
socket_read_fcgi(int fd, short event, void *arg)
{
struct runq *tmpcmd = arg;
......
}
static void
socket_read_command(int fd, short event, void *arg)
socket_read_command(int fd)
{
struct command *cmd;
struct event *ev = arg;
enum { bufsize = 2048 };
char buf[bufsize];
register int n;
char **ap, *argv[bufsize], *p;
int i, loop = 0;
if (event == EV_TIMEOUT) {
socket_close_command(fd, ev);
return;
}
tryagain:
bzero(buf, sizeof(buf));
if ((n = read (fd, buf, bufsize)) == -1) {
......
for (i = 0; i < n - 1; i++) {
if (!isalpha(buf[i]) && !isspace(buf[i]) && !isdigit(buf[i]) && !ispunct(buf[i])) {
write(fd, "ERROR:\tonly alphanumeric chars allowd", 37);
socket_close_command(fd, ev);
close(fd);
return;
}
}
......
socket_accept_command(int fd, __unused short event, __unused void *arg)
{
struct sockaddr_un sun;
struct timeval tv = { 10, 0 };
struct event *ev;
socklen_t len;
int newfd;
......
}
set_blockmode(newfd, O_NONBLOCK | FD_CLOEXEC);
if ((ev = malloc(sizeof(*ev))) == NULL) {
syslog(LOG_ERR, "Cannot allocate new struct event.");
close(newfd);
return;
}
event_set(ev, newfd, EV_READ | EV_PERSIST, socket_read_command, ev);
event_add(ev, &tv);
socket_read_command(newfd);
}
static void
(2-2/2)