Add upload limiter option (limiting to one upload per peer).
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Thu, 4 Jan 2007 00:18:38 +0000 (00:18 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Thu, 4 Jan 2007 00:18:38 +0000 (00:18 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@800 959494ce-11ee-0310-bf91-de5d638817bd

daemon/fnet-dc.c
daemon/transfer.c

index a3ee35e..4036ff8 100644 (file)
@@ -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 {
index 48a3b3a..56b237d 100644 (file)
@@ -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}
 };