RSL_Emulation: allow RSL_DchanHdlr sandbox escape for both roles

This feature was initially added in 1470fc668 for the RSL_Emulation_CT
operating in the BTS role.  In a subsequent patch I also need to escape
the sandbox, but in my case the RSL_Emulation_CT is playing the BSC role.

Change-Id: I42557f85d3e5e7ef7147a87293f5dd1716884534
Related: 1470fc668 "allow ASP_RSL_UD on MSC_ConnHdlr RSL"
Related: SYS#6655
diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index effe83b..891e565 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -651,15 +651,22 @@
 			cid := f_cid_by_comp_ref(vc_conn);
 			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl_msg, ConnectionTable[cid].stream_id));
 			}
-		[bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
-			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));
-			}
 		[not bts_role] CLIENT_PT.receive(tr_RSL_MsgType(?)) -> value rx_rsl_msg sender vc_conn {
 			cid := f_cid_by_comp_ref(vc_conn);
 			conn_id := f_trx_conn_map_resolve(ConnectionTable[cid].stream_id);
 			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl_msg, ConnectionTable[cid].stream_id, conn_id));
 			}
 
+		/* allow the RSL_DchanHdlr components to "escape the sandbox" by sending RSL messages
+		 * to other transceivers than they're bound to (determined by rx_rsl.streamId) */
+		[bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
+			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));
+			}
+		[not bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
+			conn_id := f_trx_conn_map_resolve(rx_rsl.streamId);
+			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId, conn_id));
+			}
+
 		/* RSL message from MTC */
 		[bts_role] CCHAN_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
 			IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));