[interchange] Make JSON POST handling opt-in

David Christensen interchange-cvs at icdevgroup.org
Tue Jan 6 18:11:22 UTC 2015


commit c215c52115e9332a9b0a814824ae240eae3dc735
Author: David Christensen <david at endpoint.com>
Date:   Tue Jan 6 12:11:12 2015 -0600

    Make JSON POST handling opt-in

 lib/Vend/Config.pm |    3 ++-
 lib/Vend/Server.pm |   11 +++++------
 2 files changed, 7 insertions(+), 7 deletions(-)
---
diff --git a/lib/Vend/Config.pm b/lib/Vend/Config.pm
index 1f9a48a..fbc6e0b 100644
--- a/lib/Vend/Config.pm
+++ b/lib/Vend/Config.pm
@@ -513,7 +513,8 @@ sub global_directives {
 	['Catalog',			 'catalog',     	 ''],
 	['SubCatalog',		 'catalog',     	 ''],
 	['AutoVariable',	 'autovar',     	 'UrlJoiner'],
-	['UnpackJSON',		 'yesno',	     	 'Yes'],
+	['EnableJSONPost',	 'yesno',			 'No'],
+	['UnpackJSON',		 'yesno',			 'Yes'],
 	['XHTML',			 'yesno',	     	 'No'],
 	['UTF8',			 'yesno',	     	 $ENV{MINIVEND_DISABLE_UTF8} ? 'No' : 'Yes'],
 	['External',		 'yesno',	     	 'No'],
diff --git a/lib/Vend/Server.pm b/lib/Vend/Server.pm
index 59a7a8e..e31c8f9 100644
--- a/lib/Vend/Server.pm
+++ b/lib/Vend/Server.pm
@@ -43,11 +43,10 @@ use strict;
 		require JSON;
 	};
 	if ($@) {
-		::logGlobal(
-			$@ =~ /^Can't locate JSON/ ?
-			'No POST support for application/json without installing JSON module' :
-			"Error loading JSON module: $@"
-		);
+
+		if ($@ !~ /^Can't locate JSON/) {
+			::logGlobal("Error loading JSON module: $@");
+		}
 	}
 	else {
 		$Has_JSON = 1;
@@ -339,7 +338,7 @@ sub parse_cgi {
 		if ($CGI::content_type =~ m{^(?:multipart/form-data|application/x-www-form-urlencoded|application/xml|application/json)\b}i) {
 			parse_post(\$CGI::query_string, 1)
 				if $Global::TolerateGet;
-			if ($CGI::content_type =~ m{^application/json\s*(?:;|$)}i) {
+			if ($Global::EnableJSONPost && $CGI::content_type =~ m{^application/json\s*(?:;|$)}i) {
 				if (!$Has_JSON) {
 					::logGlobal('No POST support for application/json without installing JSON module');
 					goto INVALIDPOST;



More information about the interchange-cvs mailing list