Index: /trunk/thirds/cgic206/cgic.c
===================================================================
--- /trunk/thirds/cgic206/cgic.c	(revision 96)
+++ /trunk/thirds/cgic206/cgic.c	(revision 97)
@@ -65,4 +65,5 @@
 char *cgiCookie;
 int cgiContentLength;
+int cgiTreatUrlEncoding;
 char *cgiAccept;
 char *cgiUserAgent;
@@ -231,5 +232,7 @@
 
 
+	cgiTreatUrlEncoding=1;
 	if (cgiStrEqNc(cgiRequestMethod, "post")) {
+		cgiTreatUrlEncoding=0;
 #ifdef CGICDEBUG
 		CGICDEBUGSTART
@@ -1106,12 +1109,13 @@
 	while (srcPos < len) {
 		int ch = cp[srcPos];
+		if(cgiTreatUrlEncoding==1)
 		switch (escapeState) {
 			case cgiEscapeRest:
 			if (ch == '%') {
 				escapeState = cgiEscapeFirst;
-			} /*else if (ch == '+') {
+			} else if (ch == '+') {
 				s[dstPos++] = ' ';
-			} */else {
-				s[dstPos++] = ch;	
+			} else {
+				s[dstPos++] = ch;
 			}
 			break;
@@ -1126,4 +1130,6 @@
 			break;
 		}
+		else
+		  s[dstPos++] = ch;
 		srcPos++;
 	}
Index: /trunk/thirds/cgic206/cgic.h
===================================================================
--- /trunk/thirds/cgic206/cgic.h	(revision 96)
+++ /trunk/thirds/cgic206/cgic.h	(revision 97)
@@ -139,4 +139,10 @@
 #endif
 int cgiContentLength;
+
+extern 
+#ifdef __cplusplus
+"C" 
+#endif
+int cgiTreatUrlEncoding;
 
 /* Pointer to CGI output. The cgiHeader functions should be used
