rem: p += print_q(p, q);
add: p += print_q(p, ruri_q);
context: char* print_dset(struct sip_msg* msg, int* len) {	int cnt, i;	qvalue_t q;	str uri;	char* p;	static char dset[MAX_REDIRECTION_LEN];	if (msg->new_uri.s) {		cnt = 1;		*len = msg->new_uri.len;		if (ruri_q != Q_UNSPECIFIED) {			*len += 1 + Q_PARAM_LEN + len_q(ruri_q);		}	} else {		cnt = 0;		*len = 0;	}	init_branch_iterator();	while ((uri.s = next_branch(&uri.len, &q))) {		cnt++;		*len += uri.len;		if (q != Q_UNSPECIFIED) {			*len += 1 + Q_PARAM_LEN + len_q(q);		}	}	if (cnt == 0) return 0;		*len += CONTACT_LEN + CRLF_LEN + (cnt - 1) * CONTACT_DELIM_LEN;	if (*len + 1 > MAX_REDIRECTION_LEN) {		LOG(L_ERR, "ERROR: redirection buffer length exceed\n");		return 0;	}	memcpy(dset, CONTACT, CONTACT_LEN);	p = dset + CONTACT_LEN;	if (msg->new_uri.s) {		if (ruri_q != Q_UNSPECIFIED) {			*p++ = '<';		}		memcpy(p, msg->new_uri.s, msg->new_uri.len);		p += msg->new_uri.len;		if (ruri_q != Q_UNSPECIFIED) {			memcpy(p, Q_PARAM, Q_PARAM_LEN);			p += Q_PARAM_LEN;			p += print_q(p, q);		}		i = 1;	} else {		i = 0;	}	init_branch_iterator();	while ((uri.s = next_branch(&uri.len, &q))) {		if (i) {			memcpy(p, CONTACT_DELIM, CONTACT_DELIM_LEN);			p += CONTACT_DELIM_LEN;		}		if (q != Q_UNSPECIFIED) {			*p++ = '<';		}		memcpy(p, uri.s, uri.len);		p += uri.len;		if (q != Q_UNSPECIFIED) {			memcpy(p, Q_PARAM, Q_PARAM_LEN);			p += Q_PARAM_LEN;			p += print_q(p, q);		}		i++;	}	memcpy(p, CRLF " ", CRLF_LEN + 1);	return dset;}