/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file send_common.c Functions used by more than one paraslash sender. */
+#include <regex.h>
#include <dirent.h>
+#include <osl.h>
+
#include "para.h"
#include "error.h"
#include "string.h"
*/
static int open_sender(unsigned l4type, int port)
{
- int fd, ret = para_listen(AF_UNSPEC, l4type, port);
+ int fd, ret = para_listen_simple(l4type, port);
if (ret < 0)
return ret;
if (ret < 0)
goto out;
}
- sc->header_sent = 1;
}
+ sc->header_sent = 1;
ret = send_queued_chunks(sc->fd, sc->cq, max_bytes_per_write);
if (ret < 0) {
shutdown_client(sc, ss);
*
* \return The string printed in the "si" command.
*/
-char *get_sender_info(struct sender_status *ss, char *name)
+char *get_sender_info(struct sender_status *ss, const char *name)
{
char *clnts = NULL, *ret;
struct sender_client *sc, *tmp_sc;
ret = make_message(
"%s sender:\n"
"\tstatus: %s\n"
- "\tport: %d\n"
+ "\tport: %s\n"
"\tnumber of connected clients: %d\n"
"\tmaximal number of clients: %d%s\n"
"\tconnected clients: %s\n"
"\taccess %s list: %s\n",
name,
(ss->listen_fd >= 0)? "on" : "off",
- ss->port,
+ stringify_port(ss->port, strcmp(name, "http") ? "dccp" : "tcp"),
ss->num_clients,
ss->max_clients,
ss->max_clients > 0? "" : " (unlimited)",
* \sa \ref para_accept(), \ref mark_fd_nonblocking(), \ref acl_check_access(),
* \ref cq_new(), \ref add_close_on_fork_list().
*/
-struct sender_client *accept_sender_client(struct sender_status *ss)
+struct sender_client *accept_sender_client(struct sender_status *ss, fd_set *rfds)
{
struct sender_client *sc;
- int fd, ret = para_accept(ss->listen_fd, NULL, 0);
- if (ret < 0) {
+ int fd, ret;
+
+ if (ss->listen_fd < 0)
+ return NULL;
+ ret = para_accept(ss->listen_fd, rfds, NULL, 0, &fd);
+ if (ret < 0)
PARA_ERROR_LOG("%s\n", para_strerror(-ret));
+ if (ret <= 0)
return NULL;
- }
- fd = ret;
ret = -E_MAX_CLIENTS;
if (ss->max_clients > 0 && ss->num_clients >= ss->max_clients)
goto err_out;
{
return make_message(
"usage: {on|off}\n"
- "usage: {allow|deny} IP mask\n"
- "example: allow 127.0.0.1 32\n"
+ "usage: {allow|deny} IP[/netmask]\n"
+ " where mask defaults to 32\n"
+ "example: allow 192.168.0.1/24\n"
);
}
goto out;
}
/* use default fec parameters. */
- scd->max_slice_bytes = 1490;
+ scd->max_slice_bytes = 1472;
scd->slices_per_group = 16;
scd->data_slices_per_group = 14;
ret = 0;