[sr-dev] git:master:700261df: sl: execute core event SREV_SIP_REPLY_OUT

Daniel-Constantin Mierla miconda at gmail.com
Thu Jun 18 18:46:23 CEST 2020


Module: kamailio
Branch: master
Commit: 700261dff422693fb78dbe5062998bed3eddb397
URL: https://github.com/kamailio/kamailio/commit/700261dff422693fb78dbe5062998bed3eddb397

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2020-06-18T18:45:58+02:00

sl: execute core event SREV_SIP_REPLY_OUT

---

Modified: src/modules/sl/sl_funcs.c

---

Diff:  https://github.com/kamailio/kamailio/commit/700261dff422693fb78dbe5062998bed3eddb397.diff
Patch: https://github.com/kamailio/kamailio/commit/700261dff422693fb78dbe5062998bed3eddb397.patch

---

diff --git a/src/modules/sl/sl_funcs.c b/src/modules/sl/sl_funcs.c
index c832f4fb09..e6f643c861 100644
--- a/src/modules/sl/sl_funcs.c
+++ b/src/modules/sl/sl_funcs.c
@@ -214,7 +214,8 @@ int sl_reply_helper(struct sip_msg *msg, int code, char *reason, str *tag)
 	mhomed=backup_mhomed;
 
 	keng = sr_kemi_eng_get();
-	if (_sl_evrt_local_response >= 0 || keng!=NULL)
+	if (_sl_evrt_local_response >= 0 || keng!=NULL
+			|| sr_event_enabled(SREV_SIP_REPLY_OUT))
 	{
 		if (likely(build_sip_msg_from_buf(&pmsg, buf.s, buf.len,
 				inc_msg_no()) == 0))
@@ -226,10 +227,8 @@ int sl_reply_helper(struct sip_msg *msg, int code, char *reason, str *tag)
 			onsnd_info.send_sock=dst.send_sock;
 			onsnd_info.buf=buf.s;
 			onsnd_info.len=buf.len;
-			p_onsend=&onsnd_info;
 
-			if (unlikely(!IS_SIP(msg)))
-			{
+			if (unlikely(!IS_SIP(msg))) {
 				/* This is an HTTP reply...  So fudge in a CSeq into
 				 * the parsed message message structure so that $rm will
 				 * work in the route */
@@ -293,6 +292,20 @@ int sl_reply_helper(struct sip_msg *msg, int code, char *reason, str *tag)
 				}
 			}
 
+			if(IS_SIP(msg) && sr_event_enabled(SREV_SIP_REPLY_OUT)) {
+				sr_event_param_t evp;
+				memset(&evp, 0, sizeof(sr_event_param_t));
+				evp.obuf = buf;
+				evp.rcv = &msg->rcv;
+				evp.dst = &dst;
+				evp.req = msg;
+				evp.rpl = &pmsg;
+				evp.rplcode = code;
+				evp.mode = 1;
+				sr_event_exec(SREV_SIP_REPLY_OUT, &evp);
+			}
+
+			p_onsend=&onsnd_info;
 			backup_rt = get_route_type();
 			set_route_type(LOCAL_ROUTE);
 			init_run_actions_ctx(&ctx);




More information about the sr-dev mailing list