| 
					
				 | 
			
			
				@@ -4845,50 +4845,55 @@ mg_get_var2(const char *data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-mg_get_cookie(const char *cookie_header, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              const char *var_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              char *dst, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              size_t dst_size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	const char *s, *p, *end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	int name_len, len = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (dst == NULL || dst_size == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		len = -2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} else if (var_name == NULL || (s = cookie_header) == NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		len = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dst[0] = '\0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		name_len = (int)strlen(var_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		end = s + strlen(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dst[0] = '\0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (; (s = mg_strcasestr(s, var_name)) != NULL; s += name_len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (s[name_len] == '=') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				s += name_len + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if ((p = strchr(s, ' ')) == NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					p = end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (p[-1] == ';') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					p--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (*s == '"' && p[-1] == '"' && p > s + 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					s++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					p--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if ((size_t)(p - s) < dst_size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					len = (int)(p - s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					mg_strlcpy(dst, s, (size_t)len + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					len = -3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* HCP24: some changes to compare hole var_name */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mg_get_cookie(const char *cookie_header,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const char *var_name,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char *dst,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  size_t dst_size)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const char *s, *p, *end;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int name_len, len = -1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (dst == NULL || dst_size == 0) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return -2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  dst[0] = '\0';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (var_name == NULL || (s = cookie_header) == NULL) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return -1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name_len = (int)strlen(var_name);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  end = s + strlen(s); 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (; (s = mg_strcasestr( s, var_name)) != NULL; s += name_len) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (s[name_len] == '=') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /* HCP24: now check is it a substring or a full cookie name */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if ((s == cookie_header) || (s[-1] == ' ')) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        s += name_len + 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ((p = strchr(s, ' ')) == NULL) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          p = end;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (p[-1] == ';') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          p--;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (*s == '"' && p[-1] == '"' && p > s + 1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          s++;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          p--;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ((size_t)(p - s) < dst_size) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          len = (int)(p - s);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          mg_strlcpy(dst, s, (size_t)len + 1);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          len = -3;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return len;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #if defined(USE_WEBSOCKET) || defined(USE_LUA) 
			 |