|  | @@ -891,6 +891,37 @@ request_test_handler(struct mg_connection *conn, void *cbdata)
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +/* Return the same as request_test_handler using new interfaces */
 | 
											
												
													
														|  | 
 |  | +static int
 | 
											
												
													
														|  | 
 |  | +request_test_handler2(struct mg_connection *conn, void *cbdata)
 | 
											
												
													
														|  | 
 |  | +{
 | 
											
												
													
														|  | 
 |  | +	int i;
 | 
											
												
													
														|  | 
 |  | +	char chunk_data[32];
 | 
											
												
													
														|  | 
 |  | +	const struct mg_request_info *ri;
 | 
											
												
													
														|  | 
 |  | +	struct mg_context *ctx;
 | 
											
												
													
														|  | 
 |  | +	void *ud, *cud;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ctx = mg_get_context(conn);
 | 
											
												
													
														|  | 
 |  | +	ud = mg_get_user_data(ctx);
 | 
											
												
													
														|  | 
 |  | +	ri = mg_get_request_info(conn);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ck_assert(ri != NULL);
 | 
											
												
													
														|  | 
 |  | +	ck_assert(ctx == g_ctx);
 | 
											
												
													
														|  | 
 |  | +	ck_assert(ud == &g_ctx);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	mg_send_http_ok(conn, "text/plain", -1);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for (i = 1; i <= 10; i++) {
 | 
											
												
													
														|  | 
 |  | +		mg_send_chunk(conn, chunk_data, (unsigned)i);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	mg_send_chunk(conn, 0, 0);
 | 
											
												
													
														|  | 
 |  | +	mark_point();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	return 200;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  #ifdef USE_WEBSOCKET
 |  |  #ifdef USE_WEBSOCKET
 | 
											
												
													
														|  |  /****************************************************************************/
 |  |  /****************************************************************************/
 | 
											
												
													
														|  |  /* WEBSOCKET SERVER                                                         */
 |  |  /* WEBSOCKET SERVER                                                         */
 | 
											
										
											
												
													
														|  | @@ -1291,6 +1322,8 @@ START_TEST(test_request_handlers)
 | 
											
												
													
														|  |  		                       (void *)(ptrdiff_t)i);
 |  |  		                       (void *)(ptrdiff_t)i);
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +	mg_set_request_handler(ctx, "/handler2", request_test_handler2, NULL);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  #ifdef USE_WEBSOCKET
 |  |  #ifdef USE_WEBSOCKET
 | 
											
												
													
														|  |  	mg_set_websocket_handler(ctx,
 |  |  	mg_set_websocket_handler(ctx,
 | 
											
												
													
														|  |  	                         "/websocket",
 |  |  	                         "/websocket",
 | 
											
										
											
												
													
														|  | @@ -1795,6 +1828,32 @@ START_TEST(test_request_handlers)
 | 
											
												
													
														|  |  	ck_assert_str_eq(buf, expected);
 |  |  	ck_assert_str_eq(buf, expected);
 | 
											
												
													
														|  |  	mg_close_connection(client_conn);
 |  |  	mg_close_connection(client_conn);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +	/* Get data from handler2 */
 | 
											
												
													
														|  | 
 |  | +	client_conn =
 | 
											
												
													
														|  | 
 |  | +	    mg_connect_client("localhost", ipv4_port, 0, ebuf, sizeof(ebuf));
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ck_assert_str_eq(ebuf, "");
 | 
											
												
													
														|  | 
 |  | +	ck_assert(client_conn != NULL);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	mg_printf(client_conn,
 | 
											
												
													
														|  | 
 |  | +	          "GET /handler HTTP/1.1\r\n"
 | 
											
												
													
														|  | 
 |  | +	          "Host: localhost\r\n"
 | 
											
												
													
														|  | 
 |  | +	          "\r\n",
 | 
											
												
													
														|  | 
 |  | +	          ipv4_port);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	i = mg_get_response(client_conn, ebuf, sizeof(ebuf), 10000);
 | 
											
												
													
														|  | 
 |  | +	ck_assert_int_ge(i, 0);
 | 
											
												
													
														|  | 
 |  | +	ck_assert_str_eq(ebuf, "");
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	client_ri = mg_get_response_info(client_conn);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ck_assert(client_ri != NULL);
 | 
											
												
													
														|  | 
 |  | +	ck_assert_int_eq(client_ri->status_code, 200);
 | 
											
												
													
														|  | 
 |  | +	i = mg_read(client_conn, buf, sizeof(buf));
 | 
											
												
													
														|  | 
 |  | +	ck_assert_int_eq(i, (int)strlen(expected));
 | 
											
												
													
														|  | 
 |  | +	buf[i] = 0;
 | 
											
												
													
														|  | 
 |  | +	ck_assert_str_eq(buf, expected);
 | 
											
												
													
														|  | 
 |  | +	mg_close_connection(client_conn);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /* Websocket test */
 |  |  /* Websocket test */
 | 
											
												
													
														|  |  #ifdef USE_WEBSOCKET
 |  |  #ifdef USE_WEBSOCKET
 |