This, if such a listener exists.
Change-Id: I974cc858c1e2fee50189c3c67e4abb76be32a98a
Signed-off-by: Florin Coras <fcoras@cisco.com>
/* *INDENT-OFF* */
hash_foreach (handle, sm_index, app->listeners_table, ({
listener = listen_session_get_from_handle (handle);
- if (listener->session_type == sst)
+ if (listener->session_type == sst
+ && listener->listener_index != SESSION_PROXY_LISTENER_INDEX)
return listener;
}));
/* *INDENT-ON* */
sep.transport_proto = transport_proto;
application_start_listen (app, &sep, &handle);
s = listen_session_get_from_handle (handle);
+ s->listener_index = SESSION_PROXY_LISTENER_INDEX;
}
else
{
#define HALF_OPEN_LOOKUP_INVALID_VALUE ((u64)~0)
#define INVALID_INDEX ((u32)~0)
+#define SESSION_PROXY_LISTENER_INDEX ((u32)~0 - 1)
/* TODO decide how much since we have pre-data as well */
#define MAX_HDRS_LEN 100 /* Max number of bytes for headers */
tp_vft = transport_protocol_get_vft (s->session_type);
tc = tp_vft->get_connection (s->connection_index, s->thread_index);
mp->listener_handle = listen_session_get_handle (listener);
+
+ if (application_is_proxy (server))
+ {
+ listener =
+ application_first_listener (server,
+ transport_connection_fib_proto (tc),
+ tc->proto);
+ if (listener)
+ mp->listener_handle = listen_session_get_handle (listener);
+ }
mp->handle = session_handle (s);
mp->server_rx_fifo = pointer_to_uword (s->server_rx_fifo);
mp->server_tx_fifo = pointer_to_uword (s->server_tx_fifo);