|  | @@ -539,24 +539,39 @@ static void test_request_replies(void) {
 | 
	
		
			
				|  |  |    mg_stop(ctx);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static int user_data_callback(struct mg_connection *conn) {
 | 
	
		
			
				|  |  | -  ASSERT(mg_get_request_info(conn)->user_data == (void *) 123);
 | 
	
		
			
				|  |  | -  mg_printf(conn, "HTTP/1.0 200 OK\r\n\r\nhi");
 | 
	
		
			
				|  |  | +static int api_callback(struct mg_connection *conn) {
 | 
	
		
			
				|  |  | +  struct mg_request_info *ri = mg_get_request_info(conn);
 | 
	
		
			
				|  |  | +  char post_data[100] = "";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ASSERT(ri->user_data == (void *) 123);
 | 
	
		
			
				|  |  | +  ASSERT(ri->num_headers == 2);
 | 
	
		
			
				|  |  | +  ASSERT(strcmp(mg_get_header(conn, "host"), "blah.com") == 0);
 | 
	
		
			
				|  |  | +  ASSERT(mg_read(conn, post_data, sizeof(post_data)) == 3);
 | 
	
		
			
				|  |  | +  ASSERT(memcmp(post_data, "b=1", 3) == 0);
 | 
	
		
			
				|  |  | +  ASSERT(ri->query_string != NULL);
 | 
	
		
			
				|  |  | +  ASSERT(ri->remote_ip > 0);
 | 
	
		
			
				|  |  | +  ASSERT(ri->remote_port > 0);
 | 
	
		
			
				|  |  | +  ASSERT(strcmp(ri->http_version, "1.0") == 0);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  mg_printf(conn, "HTTP/1.0 200 OK\r\n\r\n");
 | 
	
		
			
				|  |  |    return 1;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static void test_user_data(void) {
 | 
	
		
			
				|  |  | +static void test_api_calls(void) {
 | 
	
		
			
				|  |  |    char ebuf[100];
 | 
	
		
			
				|  |  |    struct mg_callbacks callbacks;
 | 
	
		
			
				|  |  |    struct mg_connection *conn;
 | 
	
		
			
				|  |  |    struct mg_context *ctx;
 | 
	
		
			
				|  |  | +  static const char *request = "POST /?a=%20&b=&c=xx HTTP/1.0\r\n"
 | 
	
		
			
				|  |  | +    "Host:  blah.com\n"     // More spaces before
 | 
	
		
			
				|  |  | +    "content-length: 3\r\n" // Lower case header name
 | 
	
		
			
				|  |  | +    "\r\nb=123456";         // Content size > content-length, test for mg_read()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    memset(&callbacks, 0, sizeof(callbacks));
 | 
	
		
			
				|  |  | -  callbacks.begin_request = user_data_callback;
 | 
	
		
			
				|  |  | +  callbacks.begin_request = api_callback;
 | 
	
		
			
				|  |  |    ASSERT((ctx = mg_start(&callbacks, (void *) 123, OPTIONS)) != NULL);
 | 
	
		
			
				|  |  |    ASSERT((conn = mg_download("localhost", atoi(HTTPS_PORT), 1,
 | 
	
		
			
				|  |  | -                             ebuf, sizeof(ebuf),
 | 
	
		
			
				|  |  | -                             "%s", "GET / HTTP/1.0\r\n\r\n")) != NULL);
 | 
	
		
			
				|  |  | +                             ebuf, sizeof(ebuf), "%s", request)) != NULL);
 | 
	
		
			
				|  |  |    mg_close_connection(conn);
 | 
	
		
			
				|  |  |    mg_stop(ctx);
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -576,7 +591,7 @@ int __cdecl main(void) {
 | 
	
		
			
				|  |  |    test_skip_quoted();
 | 
	
		
			
				|  |  |    test_mg_upload();
 | 
	
		
			
				|  |  |    test_request_replies();
 | 
	
		
			
				|  |  | -  test_user_data();
 | 
	
		
			
				|  |  | +  test_api_calls();
 | 
	
		
			
				|  |  |  #ifdef USE_LUA
 | 
	
		
			
				|  |  |    test_lua();
 | 
	
		
			
				|  |  |  #endif
 |