浏览代码

branch fixes

Jiri Kuthan 24 年之前
父节点
当前提交
f063139865
共有 4 个文件被更改,包括 28 次插入7 次删除
  1. 9 3
      modules/tm/t_funcs.c
  2. 13 0
      msg_parser.h
  3. 1 0
      msg_translator.c
  4. 5 4
      t_debug.cfg

+ 9 - 3
modules/tm/t_funcs.c

@@ -276,7 +276,11 @@ int t_forward( struct sip_msg* p_msg , unsigned int dest_ip_param , unsigned int
       if (!buf)
          return -1;
       T->outbound_request[branch]->bufflen = len ;
-      T->outbound_request[branch]->buffer   = (char*)sh_malloc( len );
+      if ( !(T->outbound_request[branch]->buffer   = (char*)sh_malloc( len ))) {
+	LOG(L_ERR, "ERROR: t_forward: shmem allocation failed\n");
+	free( buf );
+	return -1;
+      }
       memcpy( T->outbound_request[branch]->buffer , buf , len );
       free( buf ) ;
 
@@ -290,7 +294,9 @@ int t_forward( struct sip_msg* p_msg , unsigned int dest_ip_param , unsigned int
       insert_into_timer_list( hash_table , &(T->outbound_request[branch]->tl[RETRASMISSIONS_LIST]), RETRASMISSIONS_LIST , RETR_T1 );
    }/* end for the first time */
 
-   DBG("DEBUG: t_forward: sending outbund request from buffer\n");
+   DBG("DEBUG: t_forward: sending outbund request from buffer (%d bytes):\n%*s\n", 
+	T->outbound_request[branch]->bufflen, T->outbound_request[branch]->bufflen,
+	 T->outbound_request[branch]->buffer);
    /* send the request */
    udp_send( T->outbound_request[branch]->buffer , T->outbound_request[branch]->bufflen ,
                     (struct sockaddr*)&(T->outbound_request[branch]->to) , sizeof(struct sockaddr_in) );
@@ -1131,7 +1137,7 @@ int add_branch_label( struct cell *trans, struct sip_msg *p_msg, int branch )
 		  MAX_BRANCH_PARAM_LEN - p_msg->add_to_branch_len,
 		 ".%x.%x.%x",
 		 trans->hash_index, trans->label, branch );
-	DBG("DEBUG: branch created now: %s (%d)\n", p_msg->add_to_branch_s, p_msg->add_to_branch_len );
+	DBG("DEBUG: branch created now: %*s (%d)\n", n, p_msg->add_to_branch_s+p_msg->add_to_branch_len );
 	if (n==-1) {
 		LOG(L_ERR, "ERROR: add_branch_label: too small branch buffer\n");
 		return -1;

+ 13 - 0
msg_parser.h

@@ -226,9 +226,22 @@ void free_sip_msg(struct sip_msg* msg);
 /* make sure all HFs needed for transaction identification have been
    parsed; return 0 if those HFs can't be found
  */
+
+/*
 #define check_transaction_quadruple(msg ) \
 	(parse_headers(msg, HDR_FROM|HDR_TO|HDR_CALLID|HDR_CSEQ)!=-1 && \
 	 msg->from && msg->to && msg->callid && msg->cseq)
+*/
+
+/* restored to the original double-check and put macro params
+   in parenthesses  -jiri */
+
+#define check_transaction_quadruple(msg ) \
+   ( ((msg)->from || (parse_headers( (msg), HDR_FROM)!=-1 && (msg)->from)) && 	\
+   ((msg)->to|| (parse_headers( (msg), HDR_TO)!=-1 && (msg)->to)) &&		\
+   ((msg)->callid|| (parse_headers( (msg), HDR_CALLID)!=-1 && (msg)->callid)) &&\
+   ((msg)->cseq|| (parse_headers( (msg), HDR_CSEQ)!=-1 && (msg)->cseq)) ) 
+
 
 
 #endif

+ 1 - 0
msg_translator.c

@@ -204,6 +204,7 @@ char * build_req_buf_from_sip_req(	struct sip_msg* msg,
 		memcpy(line_buf+via_len, CRLF, CRLF_LEN);
 		via_len+=CRLF_LEN;
 		line_buf[via_len]=0; /* null terminate the string*/
+		DBG("DEBUG: via branch building finished\n");
 	}else{
 		LOG(L_ERR, "build_req_buf_from_sip_req: ERROR: via too long (%d)\n",
 				via_len);

+ 5 - 4
t_debug.cfg

@@ -14,7 +14,7 @@ loadmodule "modules/tm/tm.so"
 route{
 	log("trying forward to uri");
 #	forward(uri:host,uri:port);
-	forward(127.0.0.1, 5090);
+#	forward(127.0.0.1, 5090);
 	log("after forward");
 
 	if ( t_lookup_request()) {
@@ -34,11 +34,12 @@ route{
 			t_send_reply( "200", "glad to cancel");
 		} else {
 			log("new transaction");
-			t_send_reply("100", "trying -- your call is important to us");
+			#t_send_reply("100", "trying -- your call is important to us");
 		};
-		rewritehost("xy.com");
+		#rewritehost("xy.com");
 		# XXX ... it wants me to put port nr in ""
-		t_forward("fox.iptel.org", "5062" );
+		#t_forward("benetnash.fokus.gmd.de", "5080" );
+		t_forward("localhost", "5080" );
 		# XXX ... it doesn't like default port numbers
 		# t_forward("fox.iptel.org" );
 		# XXX t_forward_uri ... not done yet