/*
- * Copyright (C) 2005-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2007 Andre Noll <maan@systemlinux.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "server.cmdline.h"
#include "server.h"
#include "http.h"
-#include "afs.h"
+#include "vss.h"
#include "send.h"
#include "list.h"
#include "close_on_fork.h"
#define HTTP_ERR_MSG "HTTP/1.0 400 Bad Request\n"
/** \endcond */
-extern struct gengetopt_args_info conf;
-
/** the possible states of a client from the server's POV */
enum http_status {
HTTP_CONNECTED,
hc->fd, msg);
numclients--;
close(hc->fd);
-
+ del_close_on_fork_list(hc->fd);
list_for_each_entry_safe(qp, tmp, &hc->packet_queue, node) {
free(qp->packet);
list_del(&qp->node);
free(hc);
}
-static void http_shutdown_clients_real(void)
-{
- struct http_client *hc, *tmp;
- list_for_each_entry_safe(hc, tmp, &clients, node)
- http_shutdown_client(hc, "afs request");
-}
static void http_shutdown_clients(void)
{
struct http_client *hc, *tmp;
list_for_each_entry_safe(hc, tmp, &clients, node)
- http_shutdown_client(hc, "afs request");
+ http_shutdown_client(hc, "vss request");
}
static int http_send_msg(struct http_client *hc, const char *msg)
continue;
if (hc->status == HTTP_READY_TO_STREAM) {
int hlen;
- char *buf = afs_get_header(&hlen);
- if (buf && hlen > 0 && current_chunk) {
+ char *hbuf = vss_get_header(&hlen);
+ if (hbuf && hlen > 0 && current_chunk) {
/* need to send header */
PARA_INFO_LOG("queueing header: %d\n", hlen);
- if (queue_packet(hc, buf, hlen) < 0)
+ if (queue_packet(hc, hbuf, hlen) < 0)
continue;
} else
PARA_INFO_LOG("%s", "no need to queue header\n");
PARA_INFO_LOG("accepted client #%d: %s (fd %d)\n", numclients,
CLIENT_ADDR(hc), hc->fd);
numclients++;
- list_add(&hc->node, &clients);
+ para_list_add(&hc->node, &clients);
+ add_close_on_fork_list(hc->fd);
+ mark_fd_nonblock(hc->fd);
return;
err_out:
PARA_WARNING_LOG("ignoring connect request from %s (%s)\n",
hc->check_w = 1;
break;
case HTTP_SENT_OK_MSG:
- if (!afs_playing())
+ if (!vss_playing())
break; /* wait until server starts playing */
para_fd_set(hc->fd, wfds, max_fileno);
hc->check_w = 1;
static int open_tcp_port(int port)
{
+ int ret;
+
server_fd = init_tcp_socket(port);
if (server_fd < 0) {
- http_shutdown_clients_real();
+ http_shutdown_clients();
self->status = SENDER_OFF;
return server_fd;
}
+ ret = mark_fd_nonblock(server_fd);
+ if (ret < 0) {
+ PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret));
+ exit(EXIT_FAILURE);
+ }
self->status = SENDER_ON;
add_close_on_fork_list(server_fd);
return 1;
del_close_on_fork_list(server_fd);
server_fd = -1;
}
- http_shutdown_clients_real();
+ http_shutdown_clients();
return 1;
}
ai->netmask = scd->netmask;
PARA_INFO_LOG("adding %s/%i to access list\n", inet_ntoa(ai->addr),
ai->netmask);
- list_add(&ai->node, &access_perm_list);
+ para_list_add(&ai->node, &access_perm_list);
}
static int http_com_deny(struct sender_command_data *scd)