udp: fill rmt info if session is connection less 42/33542/4
authorliuyacan <liuyacan@corp.netease.com>
Fri, 20 Aug 2021 02:25:43 +0000 (10:25 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 1 Sep 2021 14:08:00 +0000 (14:08 +0000)
The app may send packet to different remote via sendto() with
same socket (without calling connect()). In such scenario, remote
address need to be filled in.

Type: fix

Signed-off-by: liuyacan <liuyacan@corp.netease.com>
Change-Id: I49deb308668c05442f237e97acc9bfa239782482

src/vnet/session/session_node.c

index 18fb61d..72df07b 100644 (file)
@@ -973,7 +973,7 @@ session_tx_fill_buffer (vlib_main_t * vm, session_tx_context_t * ctx,
          n_bytes_read = svm_fifo_peek (f, offset, deq_now, data0);
          ASSERT (n_bytes_read > 0);
 
-         if (ctx->s->session_state == SESSION_STATE_LISTENING)
+         if (transport_connection_is_cless (ctx->tc))
            {
              ip_copy (&ctx->tc->rmt_ip, &hdr->rmt_ip, ctx->tc->is_ip4);
              ctx->tc->rmt_port = hdr->rmt_port;