rem: +(branch)?(MY_BRANCH_LEN+branch->len):0 +(extra_params)?extra_params->len:0
add: +(branch?(MY_BRANCH_LEN+branch->len):0) +(extra_params?extra_params->len:0)
context: char* via_builder( unsigned int *len, 	struct socket_info* send_sock,	str* branch, str* extra_params, int proto ){	unsigned int  via_len, extra_len;	char               *line_buf;	int max_len;	max_len=MY_VIA_LEN+send_sock->address_str.len /* space in MY_VIA */		+2 /* just in case it is a v6 address ... [ ] */		+send_sock->port_no_str.len		+(branch)?(MY_BRANCH_LEN+branch->len):0		+(extra_params)?extra_params->len:0		+CRLF_LEN+1;	line_buf=pkg_malloc( max_len );	if (line_buf==0){		ser_error=E_OUT_OF_MEM;		LOG(L_ERR, "ERROR: via_builder: out of memory\n");		return 0;	}	extra_len=0;	via_len=MY_VIA_LEN+send_sock->address_str.len; /*space included in MY_VIA*/	memcpy(line_buf, MY_VIA, MY_VIA_LEN-4); /* without "UPD " */	if (proto==PROTO_UDP)		memcpy(line_buf+MY_VIA_LEN-4, "UDP ", 4);	else if (proto==PROTO_TCP)		memcpy(line_buf+MY_VIA_LEN-4, "TCP ", 4);	else{		LOG(L_CRIT, "BUG: via_builder: unknown proto %d\n", proto);		return 0;	}#	ifdef USE_IPV6	if (send_sock->address.af==AF_INET6) {		line_buf[MY_VIA_LEN]='[';		line_buf[MY_VIA_LEN+1+send_sock->address_str.len]=']';		extra_len=1;		via_len+=2; /* [ ]*/	}#	endif	memcpy(line_buf+MY_VIA_LEN+extra_len, send_sock->address_str.s,		send_sock->address_str.len);	if (send_sock->port_no!=SIP_PORT){		memcpy(line_buf+via_len, send_sock->port_no_str.s,			 send_sock->port_no_str.len);		via_len+=send_sock->port_no_str.len;	}	/* branch parameter */	if (branch){		memcpy(line_buf+via_len, MY_BRANCH, MY_BRANCH_LEN );		via_len+=MY_BRANCH_LEN;		memcpy(line_buf+via_len, branch->s, branch->len );		via_len+=branch->len;	}	/* extra params  */	if (extra_params){		memcpy(line_buf+via_len, extra_params->s, extra_params->len);		via_len+=extra_params->len;	}		memcpy(line_buf+via_len, CRLF, CRLF_LEN);	via_len+=CRLF_LEN;	line_buf[via_len]=0; /* null terminate the string*/	*len = via_len;	return line_buf;}