Переглянути джерело

Merge pull request #2278 from kamailio/grumvalski/siptrace_ack_fix

siptrace: safety check for transaction when checking ACK
Federico Cabiddu 5 роки тому
батько
коміт
0b3a669ca5
1 змінених файлів з 10 додано та 8 видалено
  1. 10 8
      src/modules/siptrace/siptrace.c

+ 10 - 8
src/modules/siptrace/siptrace.c

@@ -885,16 +885,18 @@ static int sip_trace_helper(sip_msg_t *msg, dest_info_t *dst, str *duri,
 			orig_t = tmb.t_gett();
 			if(tmb.t_lookup_request(msg,0,&canceled)) {
 				t_invite = tmb.t_gett();
-				if (t_invite->uas.request->msg_flags & FL_SIPTRACE) {
-					LM_DBG("Transaction is already been traced, skipping.\n");
-					ret = 1;
+				if (t_invite!=T_NULL_CELL) {
+					if (t_invite->uas.request->msg_flags & FL_SIPTRACE) {
+						LM_DBG("Transaction is already been traced, skipping.\n");
+						ret = 1;
+					}
+					tmb.t_release_transaction( t_invite );
+					tmb.t_unref(msg);
 				}
-				tmb.t_release_transaction( t_invite );
-				tmb.t_unref(msg);
-				tmb.t_sett(orig_t, T_BR_UNDEFINED);
-				if (ret)
-					return 1;
 			}
+			tmb.t_sett(orig_t, T_BR_UNDEFINED);
+			if (ret)
+				return 1;
 		}
 
 		if (trace_type == SIPTRACE_DIALOG && dlgb.get_dlg == NULL) {