tcp: fix handling of broken syn options

Change-Id: Ia8b2a077ba4897ddd15cf33221b191cd7a3f1d33
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index 4406d68..f0ae8b1 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -3097,7 +3097,7 @@
 	}
 
       /* Create child session and send SYN-ACK */
-      child0 = tcp_connection_new (my_thread_index);
+      child0 = tcp_connection_alloc (my_thread_index);
       child0->c_lcl_port = th0->dst_port;
       child0->c_rmt_port = th0->src_port;
       child0->c_is_ip4 = is_ip4;
@@ -3119,7 +3119,8 @@
 
       if (tcp_options_parse (th0, &child0->rcv_opts, 1))
 	{
-	  clib_warning ("options parse fail");
+	  error0 = TCP_ERROR_OPTIONS;
+	  tcp_connection_free (child0);
 	  goto drop;
 	}