X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=dccp_send.c;h=22f2bd1ba63467c7a13eb15951b000e67ccf3a62;hp=6cfdfbbeddccb42cd46a5d4b8c06aec24a0427ec;hb=6fb1fc05a236d8732b0ae9581cc84d9958b3af76;hpb=fd652c08d4b5b26032646c449e1979c48018b70a diff --git a/dccp_send.c b/dccp_send.c index 6cfdfbbe..22f2bd1b 100644 --- a/dccp_send.c +++ b/dccp_send.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 Andre Noll + * Copyright (C) 2006-2013 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -11,10 +11,14 @@ * (C) 2005 Ian McDonald */ +#include +#include #include #include -#include #include +#include +#include +#include #include "para.h" #include "error.h" @@ -25,6 +29,7 @@ #include "net.h" #include "list.h" #include "send.h" +#include "sched.h" #include "vss.h" #include "fd.h" #include "close_on_fork.h" @@ -102,13 +107,12 @@ static int dccp_init_fec(struct sender_client *sc) return mps; } -static int dccp_send_fec(struct sender_client *sc, char *buf, size_t len) +static void dccp_send_fec(struct sender_client *sc, char *buf, size_t len) { - int ret = write_nonblock(sc->fd, buf, len); + int ret = xwrite(sc->fd, buf, len); if (ret < 0) dccp_shutdown_client(sc); - return ret; } static void dccp_post_select(fd_set *rfds, __a_unused fd_set *wfds) @@ -145,6 +149,7 @@ static void dccp_post_select(fd_set *rfds, __a_unused fd_set *wfds) dfc->fcp.slices_per_group = conf.dccp_slices_per_group_arg; dfc->fcp.init_fec = dccp_init_fec; dfc->fcp.send_fec = dccp_send_fec; + dfc->fcp.need_periodic_header = false; dfc->fc = vss_add_fec_client(sc, &dfc->fcp); } @@ -155,6 +160,7 @@ static int dccp_com_on(__a_unused struct sender_command_data *scd) static int dccp_com_off(__a_unused struct sender_command_data *scd) { + dccp_shutdown_clients(); generic_com_off(dss); return 1; } @@ -219,6 +225,7 @@ void dccp_send_init(struct sender *s) s->pre_select = dccp_pre_select; s->post_select = dccp_post_select; s->shutdown_clients = dccp_shutdown_clients; + s->resolve_target = NULL; s->help = generic_sender_help; s->client_cmds[SENDER_ON] = dccp_com_on; s->client_cmds[SENDER_OFF] = dccp_com_off;