+
+ if((fn = transfer->fn) != NULL)
+ {
+ if(fn->state != FNN_EST)
+ {
+ transfer->close = 1;
+ return(1);
+ }
+ peer = fnetfindpeer(fn, transfer->peerid);
+ } else {
+ peer = NULL;
+ for(fn = fnetnodes; fn != NULL; fn = fn->next)
+ {
+ if((fn->state == FNN_EST) && (fn->fnet == transfer->fnet) && ((peer = fnetfindpeer(fn, transfer->peerid)) != NULL))
+ break;
+ }
+ }
+ if(peer != NULL)
+ {
+ time(&transfer->lastreq);
+ return(fn->fnet->reqconn(peer));
+ }
+ return(1);
+}
+
+void trytransferbypeer(struct fnet *fnet, wchar_t *peerid)
+{
+ struct transfer *transfer;
+
+ for(transfer = transfers; transfer != NULL; transfer = transfer->next)
+ {
+ if((transfer->dir == TRNSD_DOWN) && (transfer->state == TRNS_WAITING))
+ {
+ if((transfer->fnet == fnet) && !wcscmp(transfer->peerid, peerid))
+ {
+ if(!tryreq(transfer))
+ return;
+ }
+ }
+ }
+}
+
+void bumptransfer(struct transfer *transfer)
+{