/*
- * 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.
*/
*/
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);
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;
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;