X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=http_recv.c;h=264ae2c299c389ed59d1ee7b85424753b799fe7e;hp=b4d386027bcd65796667dc68de37d9d3d791f22b;hb=63ea5c449c9d944ffcfea2bba906ef42679fa996;hpb=39ef1da5509461b18beb5b8f16ff6118c20c0ac6 diff --git a/http_recv.c b/http_recv.c index b4d38602..264ae2c2 100644 --- a/http_recv.c +++ b/http_recv.c @@ -110,6 +110,11 @@ static void http_recv_post_select(struct sched *s, struct task *t) struct receiver_node *rn = t->private_data; struct private_http_recv_data *phd = rn->private_data; + t->ret = -E_HTTP_RECV_EOF; + if (rn->output_eof && *rn->output_eof) { + rn->eof = 1; + return; + } t->ret = 1; if (!s->select_ret) /* we're not interested in timeouts */ return; @@ -137,8 +142,10 @@ static void http_recv_post_select(struct sched *s, struct task *t) } t->ret = -E_OVERRUN; /* already streaming */ - if (rn->loaded >= BUFSIZE) + if (rn->loaded >= BUFSIZE) { + rn->eof = 1; return; + } t->ret = recv_bin_buffer(phd->fd, rn->buf + rn->loaded, BUFSIZE - rn->loaded); if (t->ret <= 0) { @@ -179,6 +186,7 @@ static int http_recv_open(struct receiver_node *rn) rn->buf = para_calloc(BUFSIZE); rn->private_data = para_calloc(sizeof(struct private_http_recv_data)); phd = rn->private_data; + PARA_NOTICE_LOG("phd = %p, rn = %p\n", phd, rn); ret = -E_HOST_INFO; if (!(he = get_host_info(conf->host_arg))) goto err_out;