|  | @@ -115,6 +115,21 @@ url_encoded_field_get(const struct mg_connection *conn,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static int
 | 
	
		
			
				|  |  | +unencoded_field_get(const struct mg_connection *conn,
 | 
	
		
			
				|  |  | +                    const char *key,
 | 
	
		
			
				|  |  | +                    size_t key_len,
 | 
	
		
			
				|  |  | +                    const char *value,
 | 
	
		
			
				|  |  | +                    size_t value_len,
 | 
	
		
			
				|  |  | +                    struct mg_form_data_handler *fdh)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	char key_dec[1024];
 | 
	
		
			
				|  |  | +	mg_url_decode(key, (int)key_len, key_dec, (int)sizeof(key_dec), 1);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return fdh->field_get(key_dec, value, value_len, fdh->user_data);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static int
 | 
	
		
			
				|  |  |  field_stored(const struct mg_connection *conn,
 | 
	
		
			
				|  |  |               const char *path,
 | 
	
		
			
				|  |  |               long long file_size,
 | 
	
	
		
			
				|  | @@ -672,14 +687,14 @@ mg_handle_form_request(struct mg_connection *conn,
 | 
	
		
			
				|  |  |  				towrite -= bl + 4;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				if (field_storage == FORM_FIELD_STORAGE_GET) {
 | 
	
		
			
				|  |  | -					url_encoded_field_get(conn,
 | 
	
		
			
				|  |  | -					                      ((get_block > 0) ? NULL : nbeg),
 | 
	
		
			
				|  |  | -					                      ((get_block > 0)
 | 
	
		
			
				|  |  | -					                           ? 0
 | 
	
		
			
				|  |  | -					                           : (size_t)(nend - nbeg)),
 | 
	
		
			
				|  |  | -					                      hend,
 | 
	
		
			
				|  |  | -					                      towrite,
 | 
	
		
			
				|  |  | -					                      fdh);
 | 
	
		
			
				|  |  | +					unencoded_field_get(conn,
 | 
	
		
			
				|  |  | +					                    ((get_block > 0) ? NULL : nbeg),
 | 
	
		
			
				|  |  | +					                    ((get_block > 0)
 | 
	
		
			
				|  |  | +					                         ? 0
 | 
	
		
			
				|  |  | +					                         : (size_t)(nend - nbeg)),
 | 
	
		
			
				|  |  | +					                    hend,
 | 
	
		
			
				|  |  | +					                    towrite,
 | 
	
		
			
				|  |  | +					                    fdh);
 | 
	
		
			
				|  |  |  					get_block++;
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -728,13 +743,13 @@ mg_handle_form_request(struct mg_connection *conn,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if (field_storage == FORM_FIELD_STORAGE_GET) {
 | 
	
		
			
				|  |  |  				/* Call callback */
 | 
	
		
			
				|  |  | -				url_encoded_field_get(conn,
 | 
	
		
			
				|  |  | -				                      ((get_block > 0) ? NULL : nbeg),
 | 
	
		
			
				|  |  | -				                      ((get_block > 0) ? 0
 | 
	
		
			
				|  |  | -				                                       : (size_t)(nend - nbeg)),
 | 
	
		
			
				|  |  | -				                      hend,
 | 
	
		
			
				|  |  | -				                      towrite,
 | 
	
		
			
				|  |  | -				                      fdh);
 | 
	
		
			
				|  |  | +				unencoded_field_get(conn,
 | 
	
		
			
				|  |  | +				                    ((get_block > 0) ? NULL : nbeg),
 | 
	
		
			
				|  |  | +				                    ((get_block > 0) ? 0
 | 
	
		
			
				|  |  | +				                                     : (size_t)(nend - nbeg)),
 | 
	
		
			
				|  |  | +				                    hend,
 | 
	
		
			
				|  |  | +				                    towrite,
 | 
	
		
			
				|  |  | +				                    fdh);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if (field_storage == FORM_FIELD_STORAGE_STORE) {
 |