return(transfer);
}
+struct transfer *hasupload(struct fnet *fnet, wchar_t *peerid)
+{
+ struct transfer *transfer;
+
+ for(transfer = transfers; transfer != NULL; transfer = transfer->next)
+ {
+ if((transfer->dir == TRNSD_UP) && (transfer->fnet == fnet) && !wcscmp(transfer->peerid, peerid))
+ break;
+ }
+ return(transfer);
+}
+
struct transfer *newupload(struct fnetnode *fn, struct fnet *fnet, wchar_t *nickid, struct transferiface *iface, void *data)
{
struct transfer *transfer;
static void filterexit(pid_t pid, int status, void *data)
{
struct transfer *transfer;
+ struct fnet *fnet;
+ wchar_t *peerid;
for(transfer = transfers; transfer != NULL; transfer = transfer->next)
{
{
transfer->filter = -1;
killfilter(transfer);
+ fnet = transfer->fnet;
+ peerid = swcsdup(transfer->peerid);
if(WEXITSTATUS(status))
- {
resettransfer(transfer);
- } else {
+ else
freetransfer(transfer);
- }
- trytransferbypeer(transfer->fnet, transfer->peerid);
+ trytransferbypeer(fnet, peerid);
+ free(peerid);
break;
}
}
{CONF_VAR_INT, "ultos", {.num = SOCK_TOS_MAXTP}},
{CONF_VAR_INT, "dltos", {.num = SOCK_TOS_MAXTP}},
{CONF_VAR_STRING, "filter", {.str = L"dc-filter"}},
+ {CONF_VAR_BOOL, "ulquota", {.num = 0}},
{CONF_VAR_END}
};