From: fredrik Date: Thu, 4 Jan 2007 00:18:38 +0000 (+0000) Subject: Add upload limiter option (limiting to one upload per peer). X-Git-Tag: 0.3~127 X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=01663fd9f926b17092dba5beb571488aaf11edf9 Add upload limiter option (limiting to one upload per peer). git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@800 959494ce-11ee-0310-bf91-de5d638817bd --- diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index a3ee35e..4036ff8 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -1545,6 +1545,11 @@ static void cmd_direction(struct socket *sk, struct dcpeer *peer, char *cmd, cha peer->direction = mydir; if(peer->direction == TRNSD_UP) { + if(confgetint("transfer", "ulquota") && hasupload(&dcnet, peer->wcsname)) + { + freedcpeer(peer); + return; + } transfer = newupload(peer->fn, &dcnet, peer->wcsname, &dctransfer, peer); } else { if((transfer = finddownload(peer->wcsname)) == NULL) @@ -1591,6 +1596,11 @@ static void cmd_peerlock(struct socket *sk, struct dcpeer *peer, char *cmd, char sendsupports(peer); if((transfer = finddownload(peer->wcsname)) == NULL) { + if(confgetint("transfer", "ulquota") && hasupload(&dcnet, peer->wcsname)) + { + freedcpeer(peer); + return; + } peer->direction = TRNSD_UP; transfer = newupload(peer->fn, &dcnet, peer->wcsname, &dctransfer, peer); } else { diff --git a/daemon/transfer.c b/daemon/transfer.c index 48a3b3a..56b237d 100644 --- a/daemon/transfer.c +++ b/daemon/transfer.c @@ -802,6 +802,7 @@ static struct configvar myvars[] = {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} };