瀏覽代碼

module/sipcapture: added RPID parser for PPI field

Alexandr Dubovikov 7 年之前
父節點
當前提交
deb3f4ab15
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      src/modules/sipcapture/sipcapture.c

+ 11 - 0
src/modules/sipcapture/sipcapture.c

@@ -67,6 +67,7 @@
 #include "../../core/parser/parse_uri.h"
 #include "../../core/parser/parse_uri.h"
 #include "../../core/parser/digest/digest.h"
 #include "../../core/parser/digest/digest.h"
 #include "../../core/parser/parse_ppi_pai.h"
 #include "../../core/parser/parse_ppi_pai.h"
+#include "../../core/parser//parse_rpid.h"
 #include "../../core/forward.h"
 #include "../../core/forward.h"
 #include "../../core/pvar.h"
 #include "../../core/pvar.h"
 #include "../../core/str.h"
 #include "../../core/str.h"
@@ -1921,6 +1922,16 @@ static int sip_capture(sip_msg_t *msg, str *_table,
 			LM_DBG("PARSE PPI: (%.*s)\n", ppi->uri.len, ppi->uri.s);
 			LM_DBG("PARSE PPI: (%.*s)\n", ppi->uri.len, ppi->uri.s);
 			sco.pid_user = ppi->parsed_uri.user;
 			sco.pid_user = ppi->parsed_uri.user;
 		}
 		}
+	} else if((parse_rpid_header(msg) == 0) && (msg->rpid) && (msg->rpid->parsed)) {
+		to_body_t *rpid = get_rpid(msg);
+		if((rpid->parsed_uri.user.s == NULL)
+				&& (parse_uri(rpid->uri.s, rpid->uri.len, &rpid->parsed_uri) < 0)) {
+			LM_DBG("DEBUG: do_action: bad rpid: method:[%.*s] CID: [%.*s]\n",
+					sco.method.len, sco.method.s, sco.callid.len, sco.callid.s);
+		} else {
+			LM_DBG("PARSE RPID: (%.*s)\n",rpid->uri.len, rpid->uri.s);
+			sco.pid_user = rpid->parsed_uri.user;
+		}
 	} else {
 	} else {
 		EMPTY_STR(sco.pid_user);
 		EMPTY_STR(sco.pid_user);
 	}
 	}