void (*wantdata)(struct transfer *transfer, void *data);
};
-struct transarg
-{
- struct transarg *next;
- wchar_t *rec;
- wchar_t *val;
-};
-
struct transfer
{
struct transfer *next, *prev;
struct fnetnode *fn;
void *ifacedata;
struct socket *localend;
- struct transarg *args;
+ struct wcspair *args;
pid_t filter;
struct authhandle *auth;
struct socket *filterout;
char *filterbuf;
+ struct hash *hash;
size_t filterbufsize, filterbufdata;
CBCHAIN(trans_ac, struct transfer *transfer, wchar_t *attrib);
CBCHAIN(trans_p, struct transfer *transfer);
void resettransfer(struct transfer *transfer);
void transfersetlocalend(struct transfer *transfer, struct socket *sk);
void *transfergetdata(struct transfer *transfer, size_t *size);
-void transferaddarg(struct transfer *transfer, wchar_t *rec, wchar_t *val);
int forkfilter(struct transfer *transfer);
void transferputdata(struct transfer *transfer, void *buf, size_t size);
size_t transferdatasize(struct transfer *transfer);
void transferendofdata(struct transfer *transfer);
void transferprepul(struct transfer *transfer, size_t size, size_t start, size_t end, struct socket *lesk);
void transferstartul(struct transfer *transfer, struct socket *sk);
+void transfersethash(struct transfer *transfer, struct hash *hash);
+struct transfer *finddownload(wchar_t *peerid);
+void transferstartdl(struct transfer *transfer, struct socket *sk);
+void trytransferbypeer(struct fnet *fnet, wchar_t *peerid);
extern struct transfer *transfers;
+extern unsigned long long bytesupload;
+extern unsigned long long bytesdownload;
EGCBCHAIN(newtransfercb, struct transfer *);
#endif