punt: fix tracing for partially traced chains

This fixes a crash if the first buffer in buffer chain is not traced,
but some other buffer (mid-chain) is.

Change-Id: I2c9f529ae0bc3263d20981e0cb83ce24ed292bd8
Signed-off-by: Klement Sekera <ksekera@cisco.com>
diff --git a/src/vnet/ip/punt.c b/src/vnet/ip/punt.c
index 6a8f451..db3ea33 100644
--- a/src/vnet/ip/punt.c
+++ b/src/vnet/ip/punt.c
@@ -360,10 +360,7 @@
       punt_client_t *c = NULL;
       if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED))
 	{
-	  if (!c)
-	    {
-	      c = punt_client_get (is_ip4, port);
-	    }
+	  c = punt_client_get (is_ip4, port);
 	  udp_punt_trace_t *t;
 	  t = vlib_add_trace (vm, node, b, sizeof (t[0]));
 	  clib_memcpy (&t->client, c, sizeof (t->client));
@@ -393,6 +390,10 @@
 	      b = vlib_get_buffer (vm, b->next_buffer);
 	      if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED))
 		{
+		  if (PREDICT_FALSE (!c))
+		    {
+		      c = punt_client_get (is_ip4, port);
+		    }
 		  udp_punt_trace_t *t;
 		  t = vlib_add_trace (vm, node, b, sizeof (t[0]));
 		  clib_memcpy (&t->client, c, sizeof (t->client));