stp: Discard any ASP-UP retransmissions

In some cases, there's some time between accepting the SCTP connection
and the execution of f_M3UA_CLNT_asp_up().  This may cause the
client sending re-transmitted ASP-UP messages.  Let's simply flush
and ignore those, rather than failing the test case.

Change-Id: Iea39e9543535977a3004b150e222ce8c7f4d821a
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn
index 08fc9c9..41b2e2c 100644
--- a/stp/STP_Tests_M3UA.ttcn
+++ b/stp/STP_Tests_M3UA.ttcn
@@ -148,6 +148,22 @@
 	}
 }
 
+/* flush any number of queued messages matching 'msg' */
+friend function f_M3UA_flush(integer idx, template (present) PDU_M3UA msg) runs on RAW_M3UA_CT {
+	var M3UA_RecvFrom rx;
+	timer T := 0.01;
+	T.start;
+	alt {
+	/* this should normally be possible with something like M3UA[idx].check(receive(...)) but somehow
+	 * TITAN complains about the 'check' token, so it looks that feature of TTCN3 is not supported? */
+	[] M3UA[idx].receive(t_M3UA_RecvFrom(msg)) {
+		repeat;
+		}
+	[] T.timeout {
+		}
+	}
+}
+
 private template (value) Socket ts_Socket(HostName hostName, PortNumber portNumber) := {
 	hostName := hostName,
         portNumber := portNumber
@@ -672,6 +688,9 @@
 /* expect/perform an inbound ASP-UP procedure */
 friend function f_M3UA_CLNT_asp_up(integer idx, template OCT4 aspid := omit) runs on RAW_M3UA_CT {
 	f_M3UA_exp(idx, tr_M3UA_ASPUP(aspid));
+	/* there might have been multiple re-transmissions that have queued up in the ATS between
+	 * the SCTP connection establishment and this function execution, so let's flush those copies. */
+	f_M3UA_flush(idx, tr_M3UA_ASPUP(aspid));
 	f_M3UA_send(idx, ts_M3UA_ASPUP_ACK);
 }