From 7106ecaec0025623f2fe8975c2011f1ac2b6cf11 Mon Sep 17 00:00:00 2001 From: Matt Merhar Date: Mon, 21 Jul 2025 22:19:27 -0400 Subject: [PATCH] rtorrent: fix SCGI headers Newer versions of rtorrent stopped responding to these plugins, and comparing it to another (working) XML-RPC client, the difference was the 1 after the SCGI in the header (\000 1 vs \001). This matches up with the example on Wikipedia's "Simple Common Gateway Interface" page. --- plugins/rtorrent/rtom_allsessions_mem | 4 ++-- plugins/rtorrent/rtom_allsessions_peers | 4 ++-- plugins/rtorrent/rtom_allsessions_spdd | 4 ++-- plugins/rtorrent/rtom_allsessions_vol | 4 ++-- plugins/rtorrent/rtom_mem | 4 ++-- plugins/rtorrent/rtom_peers | 4 ++-- plugins/rtorrent/rtom_spdd | 4 ++-- plugins/rtorrent/rtom_vol | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/plugins/rtorrent/rtom_allsessions_mem b/plugins/rtorrent/rtom_allsessions_mem index fc203d5c..c92c2be2 100755 --- a/plugins/rtorrent/rtom_allsessions_mem +++ b/plugins/rtorrent/rtom_allsessions_mem @@ -70,7 +70,7 @@ sub get_rtorrent_version { my $version; my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -117,7 +117,7 @@ sub construct_line { my $function = rtorrent_version_lower_than($_[0], '0.9.0') ? 'get_memory_usage' : 'pieces.memory.current'; my $line = "$function"; my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; return $line; diff --git a/plugins/rtorrent/rtom_allsessions_peers b/plugins/rtorrent/rtom_allsessions_peers index 5526668c..bf7053f5 100755 --- a/plugins/rtorrent/rtom_allsessions_peers +++ b/plugins/rtorrent/rtom_allsessions_peers @@ -80,7 +80,7 @@ sub get_rtorrent_version { my $version; my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -129,7 +129,7 @@ sub construct_line { my $function_hash = rtorrent_version_lower_than($_[0], '0.9.0') ? 'd.get_hash=' : 'd.hash='; my $line = "$function_multicall$function_multicall_argmain$function_hashp.multicall=,p.is_encrypted=,p.is_incoming="; my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; return $line; diff --git a/plugins/rtorrent/rtom_allsessions_spdd b/plugins/rtorrent/rtom_allsessions_spdd index aada54f5..f3a13f6f 100755 --- a/plugins/rtorrent/rtom_allsessions_spdd +++ b/plugins/rtorrent/rtom_allsessions_spdd @@ -94,7 +94,7 @@ sub get_rtorrent_version { my $version; my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -144,7 +144,7 @@ sub construct_line { my $line = "system.multicallmethodName$function_totalupparamsmethodName$function_totaldownparamsmethodName$function_rateupparamsmethodName$function_ratedownparams"; my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; return $line; diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index 3d504943..b8a5cb42 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -81,7 +81,7 @@ sub get_rtorrent_version { my $version; my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -130,7 +130,7 @@ sub construct_line { my $function_hash = rtorrent_version_lower_than($_[0], '0.9.0') ? 'd.get_hash=' : 'd.hash='; my $line = "$function_multicall$function_multicall_arg${_}$function_hash"; my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; return $line; diff --git a/plugins/rtorrent/rtom_mem b/plugins/rtorrent/rtom_mem index 63428052..c0fb3f47 100755 --- a/plugins/rtorrent/rtom_mem +++ b/plugins/rtorrent/rtom_mem @@ -78,7 +78,7 @@ sub rtorrent_version_lower_than { } my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -98,7 +98,7 @@ my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value> my $function = rtorrent_version_lower_than('0.9.0') ? 'get_memory_usage' : 'pieces.memory.current'; my $line = "$function"; my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_peers b/plugins/rtorrent/rtom_peers index 29b55934..a319fe6c 100755 --- a/plugins/rtorrent/rtom_peers +++ b/plugins/rtorrent/rtom_peers @@ -89,7 +89,7 @@ sub rtorrent_version_lower_than { } my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -113,7 +113,7 @@ my $function_multicall_arg = rtorrent_version_lower_than('0.9.0') ? '' : '< my $function_hash = rtorrent_version_lower_than('0.9.0') ? 'd.get_hash=' : 'd.hash='; my $line = "$function_multicall$function_multicall_argmain$function_hashp.multicall=,p.is_encrypted=,p.is_incoming="; my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_spdd b/plugins/rtorrent/rtom_spdd index b4476e35..c99c1cef 100755 --- a/plugins/rtorrent/rtom_spdd +++ b/plugins/rtorrent/rtom_spdd @@ -117,7 +117,7 @@ sub rtorrent_version_lower_than { } my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -141,7 +141,7 @@ my $function_ratedown = rtorrent_version_lower_than('0.9.0') ? 'get_download_rat my $line = "system.multicallmethodName$function_totalupparamsmethodName$function_totaldownparamsmethodName$function_rateupparamsmethodName$function_ratedownparams"; my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_vol b/plugins/rtorrent/rtom_vol index 5e76e186..d2601624 100755 --- a/plugins/rtorrent/rtom_vol +++ b/plugins/rtorrent/rtom_vol @@ -90,7 +90,7 @@ sub rtorrent_version_lower_than { } my $line_version= "system.client_version"; my $llen = length $line_version; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; my $hlen = length $header; $line_version= "${hlen}:${header},${line_version}"; print SOCK $line_version; @@ -137,7 +137,7 @@ foreach ( @views ) { $line = "$function_multicall$function_multicall_arg${_}$function_hash"; $llen = length $line; - $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + $header = "CONTENT_LENGTH\000${llen}\000SCGI\0001\000"; $hlen = length $header; $line = "${hlen}:${header},${line}";