MEDIUM: stick-table: free newly allocated stkess if it couldn't be inserted

In __stktable_get_entry() now we're planning for the possibility that the
call to __stktable_store() doesn't add the newly allocated entry and instead
finds a previously inserted one. At the moment this doesn't exist because
the lookup + insert passes are made under the same lock. But it will soon
change.
diff --git a/src/stick_table.c b/src/stick_table.c
index 6f5e6c8..95913b1 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -523,7 +523,7 @@
  */
 struct stksess *__stktable_get_entry(struct stktable *table, struct stktable_key *key)
 {
-	struct stksess *ts;
+	struct stksess *ts, *ts2;
 
 	if (!key)
 		return NULL;
@@ -534,7 +534,14 @@
 		ts = __stksess_new(table, key);
 		if (!ts)
 			return NULL;
-		__stktable_store(table, ts);
+		ts2 = __stktable_store(table, ts);
+		if (unlikely(ts2 != ts)) {
+			/* another entry was added in the mean time, let's
+			 * switch to it.
+			 */
+			__stksess_free(table, ts);
+			ts = ts2;
+		}
 	}
 	return ts;
 }