Переглянути джерело

I think I fixed the intermittent 400s

George Baugh 5 місяців тому
батько
коміт
7a347121ac
1 змінених файлів з 2 додано та 6 видалено
  1. 2 6
      lib/TPSGI.pm

+ 2 - 6
lib/TPSGI.pm

@@ -866,8 +866,7 @@ sub extract_query {
     # Now that we've parsed the query and know where we want to go,
     # we should (optionally) murder everything the route does not explicitly want, and validate what it does
     my $parameters = $route->{parameters};
-    if ($parameters) {
-        die "invalid route definition for $path: bad parameters" unless ref $parameters eq 'HASH';
+    if (ref $parameters eq 'HASH' && %$parameters) {
         my @known_params = keys(%$parameters);
         for my $param (@known_params) {
             die "Invalid route definition for $path: parameter $param must correspond to a validation CODEREF." unless ref $parameters->{$param} eq 'CODE';
@@ -880,12 +879,9 @@ sub extract_query {
             return $self->badrequest($query) unless $parameters->{$param}->( $query->{$param} );
         }
 
-        # Smack down passing of unnecessary fields
+        # Smack down passing of unnecessary fields; this catches bugs
         foreach my $field ( keys(%$query) ) {
             next if List::Util::any { $field eq $_ } @known_params;
-            #XXX I am unsure as to what injects 'body' sometimes.
-            next if List::Util::any { $field eq $_ } qw{start route streaming method fullpath body};
-            $self->DEBUG("Rejected $path for query param $field");
             return $self->badrequest($query);
         }
     }