summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authortiptorrent development team <tiptorrent@soleta.eu>2021-09-13 11:54:19 +0200
committertiptorrent development team <tiptorrent@soleta.eu>2021-09-29 15:48:16 +0200
commit7a04638c320c61eb52c0a849fc8cf5ddd6e1ad8c (patch)
tree5d37d25a266a90e4abbc58f3c134a0e054cb3c05 /src
parentcbcc71db72efb91adf7d7dac275de8ba4e12af0c (diff)
update num_clients and redirection only for large files
Skip num_clients and redirection update for small files.
Diffstat (limited to 'src')
-rw-r--r--src/core.c5
-rw-r--r--src/handler.c16
2 files changed, 12 insertions, 9 deletions
diff --git a/src/core.c b/src/core.c
index c3d4c03..530c86a 100644
--- a/src/core.c
+++ b/src/core.c
@@ -50,9 +50,10 @@ static void tip_client_release(struct ev_loop *loop, struct tip_client *cli)
free((void *)cli->path);
if (cli->method == TIP_METHOD_GET) {
- num_clients--;
- if (tip_client_large_file(cli))
+ if (tip_client_large_file(cli)) {
+ num_clients--;
tip_client_activate_pending();
+ }
}
free(cli);
diff --git a/src/handler.c b/src/handler.c
index 36d2628..b283ea6 100644
--- a/src/handler.c
+++ b/src/handler.c
@@ -107,13 +107,15 @@ int tip_client_state_process_payload(struct tip_client *cli)
return 0;
}
- cli->allow_redirect = allow_redirect;
-
- num_clients++;
- if (tip_client_large_file(cli) && num_clients > max_clients) {
- if (!tip_client_redirect(cli)) {
- tip_client_pending(cli);
- return 1;
+ if (tip_client_large_file(cli)) {
+ cli->allow_redirect = allow_redirect;
+
+ num_clients++;
+ if (num_clients > max_clients) {
+ if (!tip_client_redirect(cli)) {
+ tip_client_pending(cli);
+ return 1;
+ }
}
}