Browse Source

- fixed SUBST_{SND,RCV}_IP for the ipv6 case (address must be enclosed in [])

Andrei Pelinescu-Onciul 22 years ago
parent
commit
5646666df9
1 changed files with 12 additions and 0 deletions
  1. 12 0
      msg_translator.c

+ 12 - 0
msg_translator.c

@@ -515,9 +515,15 @@ static inline void process_lumps(	struct sip_msg* msg,
 	switch((subst_l)->u.subst){ \
 		case SUBST_RCV_IP: \
 			if (msg->rcv.bind_address){  \
+				if (msg->rcv.bind_address->address.af!=AF_INET){\
+					new_buf[offset]='['; offset++; \
+				}\
 				memcpy(new_buf+offset, msg->rcv.bind_address->address_str.s, \
 						msg->rcv.bind_address->address_str.len); \
 				offset+=msg->rcv.bind_address->address_str.len; \
+				if (msg->rcv.bind_address->address.af!=AF_INET){\
+					new_buf[offset]=']'; offset++; \
+				}\
 			}else{  \
 				/*FIXME*/ \
 				LOG(L_CRIT, "FIXME: process_lumps: null bind_address\n"); \
@@ -535,9 +541,15 @@ static inline void process_lumps(	struct sip_msg* msg,
 			break; \
 		case SUBST_SND_IP: \
 			if (send_sock){  \
+				if (send_sock->address.af!=AF_INET){\
+					new_buf[offset]='['; offset++; \
+				}\
 				memcpy(new_buf+offset, send_sock->address_str.s, \
 									send_sock->address_str.len); \
 				offset+=send_sock->address_str.len; \
+				if (send_sock->address.af!=AF_INET){\
+					new_buf[offset]=']'; offset++; \
+				}\
 			}else{  \
 				/*FIXME*/ \
 				LOG(L_CRIT, "FIXME: process_lumps: called with" \