http server: improvements

- use http sessions to track communication with peer (as opposed to
using the raw sessions)
- for static server send ok message prior to sending data
- static server can now handle GET requests spread over multiple
packets. Good for testing http/tcp implementation.

Change-Id: I767a790de9a42e7087db5ce8eefd8efaf598c695
Signed-off-by: Florin Coras <fcoras@cisco.com>
This commit is contained in:
Florin Coras
2018-12-20 09:50:50 -08:00
parent 1c17e2ecac
commit 844a36d1a6
3 changed files with 291 additions and 109 deletions

File diff suppressed because it is too large Load Diff

View File

@ -66,6 +66,7 @@ session_send_evt_to_thread (void *data, void *args, u32 thread_index,
evt->rpc_args.arg = args;
break;
case FIFO_EVENT_APP_TX:
case SESSION_IO_EVT_TX_FLUSH:
case FIFO_EVENT_BUILTIN_RX:
evt->fifo = data;
break;

View File

@ -204,7 +204,7 @@ static clib_error_t *
show_session_command_fn (vlib_main_t * vm, unformat_input_t * input,
vlib_cli_command_t * cmd)
{
u8 *str = 0, one_session = 0, do_listeners = 0, sst, do_elog = 1;
u8 *str = 0, one_session = 0, do_listeners = 0, sst, do_elog = 0;
session_manager_main_t *smm = &session_manager_main;
u32 transport_proto = ~0, track_index;
stream_session_t *pool, *s;
@ -241,7 +241,7 @@ show_session_command_fn (vlib_main_t * vm, unformat_input_t * input,
if (one_session)
{
str = format (0, "%U", format_stream_session, s, 3);
if (do_elog)
if (do_elog && s->session_state != SESSION_STATE_LISTENING)
{
elog_main_t *em = &vm->elog_main;
f64 dt;