@@ -46,7 +46,7 @@ sub register {
4646 }
4747 my $limit = 8;
4848 eval {
49- $limit = $app -> mcconfig-> limit_mirrorlist_folder // $limit ;
49+ $limit = $app -> mcconfig-> limit_mirrorlist_folder || $limit ;
5050 };
5151 my (@mirrors_country , @mirrors_region , @mirrors_rest );
5252 my $project_id = $c -> mcproject-> get_id($path );
@@ -782,16 +782,16 @@ sub _collect_mirrors {
782782 my $vpn = $dm -> vpn;
783783 my ($lat , $lng ) = $dm -> coord;
784784 my $avoid_countries = $dm -> avoid_countries;
785- my $mirrorlist = $dm -> mirrorlist;
785+ my $schemastrict = 1;
786+ $schemastrict = 0 if $dm -> mirrorlist && $file_name ;
786787 my $ipvstrict = $dm -> ipvstrict;
787- my $metalink = $dm -> metalink || $dm -> meta4 || $dm -> zsync;
788788 my $rs = $dm -> c-> schema-> resultset(' Server' );
789789
790790 my $m ;
791791 $m = $rs -> mirrors_query(
792792 $country , $region , $realfolder_id , $folder_id , $file_id , $realproject_id , $project_id ,
793793 $scheme , $ipv , $lat , $lng , $avoid_countries , $limit , 0,
794- ! $mirrorlist , $ipvstrict , $vpn , $dm -> path
794+ $schemastrict , $ipvstrict , $vpn , $dm -> path
795795 ) if $country ;
796796
797797 if ($m && scalar (@$m )) {
@@ -807,7 +807,7 @@ sub _collect_mirrors {
807807 $m = $rs -> mirrors_query(
808808 $country , $region , $realfolder_id , $folder_id , $file_id , $realproject_id , $project_id ,
809809 $scheme , $ipv , $lat , $lng , \@avoid_countries , $limit , 0,
810- ! $mirrorlist , $ipvstrict , $vpn , $dm -> path
810+ $schemastrict , $ipvstrict , $vpn , $dm -> path
811811 );
812812 my $found_more ;
813813
@@ -826,7 +826,7 @@ sub _collect_mirrors {
826826 $m = $rs -> mirrors_query(
827827 $country , $region , $realfolder_id , $folder_id , $file_id , $realproject_id , $project_id ,
828828 $scheme , $ipv , $lat , $lng , $avoid_countries , $limit , 1,
829- ! $mirrorlist , $ipvstrict , $vpn , $dm -> path
829+ $schemastrict , $ipvstrict , $vpn , $dm -> path
830830 );
831831 my $found_more ;
832832 $found_more = scalar (@$m ) if $m ;
@@ -842,9 +842,13 @@ sub _collect_mirrors {
842842 my $path = $dm -> path . $dm -> trailing_slash;
843843 for $m (@$mirrors_country , @$mirrors_region , @$mirrors_rest ) {
844844 if ($file_name ) {
845- $m -> {url } = $m -> {scheme } . ' ://' . $m -> {hostname } . Mojo::Util::url_escape($m -> {urldir } . $m -> { folder_path } . ' /' . $file_name , ' ^A-Za-z0-9\-._~/' );
845+ $m -> {url } = $m -> {scheme } . ' ://' . $m -> {hostname } . Mojo::Util::url_escape($m -> {urldir } . ' /' . $file_name , ' ^A-Za-z0-9\-._~/' );
846846 } else {
847- $m -> {url } = $m -> {scheme } . ' ://' . $m -> {hostname } . Mojo::Util::url_escape($m -> {urldir } . $path , ' ^A-Za-z0-9\-._~/' );
847+ my $urldir = $m -> {urldir };
848+ if ( ' /repodata' eq substr ($urldir , -length (' /repodata' )) && ' /repodata' ne substr ($dm -> path, -length (' /repodata' ))) {
849+ $urldir = substr ($urldir , 0, -length (' /repodata' ));
850+ }
851+ $m -> {url } = $m -> {scheme } . ' ://' . $m -> {hostname } . Mojo::Util::url_escape($urldir . $dm -> trailing_slash, ' ^A-Za-z0-9\-._~/' );
848852 }
849853 }
850854 return $found_count ;
0 commit comments