X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=blobdiff_plain;f=daemon%2Ftransfer.c;h=9ad6efea235cf4fed4b27b60cd5cf156c011ea26;hp=26b9588788dc83861d688633e4e63bdfe48272c9;hb=96be906d7e4bf2bfa84a926e1b1b149cdd708021;hpb=363c7059ebeac9d54a372a26737e2235d849eae5 diff --git a/daemon/transfer.c b/daemon/transfer.c index 26b9588..9ad6efe 100644 --- a/daemon/transfer.c +++ b/daemon/transfer.c @@ -284,9 +284,9 @@ void transferendofdata(struct transfer *transfer) } } -size_t transferdatasize(struct transfer *transfer) +ssize_t transferdatasize(struct transfer *transfer) { - return(sockqueuesize(transfer->localend)); + return(sockqueueleft(transfer->localend)); } void *transfergetdata(struct transfer *transfer, size_t *size) @@ -295,7 +295,6 @@ void *transfergetdata(struct transfer *transfer, size_t *size) if(transfer->localend == NULL) return(NULL); - sockblock(transfer->localend, 0); time(&transfer->activity); if((buf = sockgetinbuf(transfer->localend, size)) == NULL) return(NULL); @@ -319,7 +318,6 @@ void transferprepul(struct transfer *transfer, off_t size, off_t start, off_t en transfersetsize(transfer, size); transfer->curpos = start; transfer->endpos = end; - sockblock(lesk, 1); transfersetlocalend(transfer, lesk); } @@ -334,7 +332,7 @@ void transferstartul(struct transfer *transfer, struct socket *sk) transfersetstate(transfer, TRNS_MAIN); socksettos(sk, confgetint("transfer", "ultos")); if(transfer->localend != NULL) - sockblock(transfer->localend, 0); + transferread(transfer->localend, transfer); } void transfersetlocalend(struct transfer *transfer, struct socket *sk) @@ -724,7 +722,7 @@ int forkfilter(struct transfer *transfer) * the fd, and thus it closes it. Until I can find out whyever the * kernel gives a POLLIN on the fd (if I can at all...), I'll just * set ignread on insock for now. */ - sockblock(insock, 1); +/* sockblock(insock, 1); */ transfer->filter = pid; transfersetlocalend(transfer, insock); getsock(transfer->filterout = outsock);