From 7ec99c4900b7fd6117fc20e70c76eba4c8032f6f Mon Sep 17 00:00:00 2001
From: jake <jake@jakes-mail.top>
Date: Fri, 26 Aug 2022 07:59:08 -0400
Subject: Fix certificate setting errorously emiting an error when client did
 not present certificate

Fix in redirection setting again
---
 gmi.pl | 36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/gmi.pl b/gmi.pl
index 8381ecf..246b809 100755
--- a/gmi.pl
+++ b/gmi.pl
@@ -7,7 +7,7 @@ use warnings;
 use 5.010;
 #use diagnostics;
 
-our $VERSION = 'v0.17.1';
+our $VERSION = 'v0.17.2';
 
 # Modules
 use IO::Socket::SSL; # CPAN
@@ -1092,18 +1092,19 @@ sub redirection_parameter {
 		$vhost = 'default';
 	}
 
-	## no critic (cascading)
-	if ($r eq 'no') {
-		return 0;
-	}
-	elsif ($r eq 'simple') {
-		return 1;
-	}
-	elsif ($r eq 'regex') {
-		return 2;
-	}
-	elsif ($r) {
-		serr("'$vhost': Given redirection parameter is invalid: $r");
+	if ($r) {
+		if ($r eq 'no') {
+			return 0;
+		}
+		elsif ($r eq 'simple') {
+			return 1;
+		}
+		elsif ($r eq 'regex') {
+			return 2;
+		}
+		else  {
+			serr("'$vhost': Given redirection parameter is invalid: $r");
+		}
 	}
 
 	return;
@@ -1200,8 +1201,13 @@ sub cert_req {
 					}
 				}
 				# must be string, hopefully 'any'
-				elsif ($cert_req->{$key} eq 'any' and defined $cl_cert) {
-					return 0;
+				elsif ($cert_req->{$key} eq 'any') {
+					if (defined $cl_cert) {
+						return 0;
+					}
+					else {
+						return 1;
+					}
 				}
 				else {
 					serr("'$vhost': certs: when not an array, it must be 'any'.");
-- 
cgit v1.2.3