- if((sockgetdatalen(sk) > 0) && (transfer->iface != NULL) && (transfer->iface->gotdata != NULL))
- transfer->iface->gotdata(transfer, transfer->ifacedata);
+ void *buf;
+ size_t blen;
+
+ if(transfer->datapipe != NULL) {
+ buf = sockgetinbuf(sk, &blen);
+ sockqueue(transfer->datapipe, buf, blen);
+ if(sockqueuesize(transfer->datapipe) >= 65536)
+ sockblock(sk, 1);
+ else
+ sockblock(sk, 0);
+ } else {
+ if(sockgetdatalen(sk) >= 65536)
+ sockblock(sk, 1);
+ }