progress = 60 * 1000;
agent->sa_progress = progress;
- if (server_rport > 2)
+ if (server_rport > 3)
server_rport = 1;
else if (server_rport < 0)
server_rport = 1;
rport = su_sprintf(msg_home(msg), "rport=%u", ntohs(from->su_port));
msg_header_replace_param(msg_home(msg), v->v_common, rport);
}
- else if (agent->sa_server_rport == 2) {
+ else if (agent->sa_server_rport == 2 ||
+ (agent->sa_server_rport == 3 && sip && sip->sip_user_agent &&
+ sip->sip_user_agent->g_string && !strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7))) {
rport = su_sprintf(msg_home(msg), "rport=%u", ntohs(from->su_port));
msg_header_replace_param(msg_home(msg), v->v_common, rport);
}
profile->dtmf_type = DTMF_NONE;
}
} else if (!strcasecmp(var, "NDLB-force-rport")) {
- if (switch_true(val)) {
+ if (val && !strcasecmp(val, "safe")) {
+ profile->rport_level = 3;
+ } else if (switch_true(val)) {
profile->rport_level = 2;
}
} else if (!strcasecmp(var, "caller-id-type")) {
profile->dtmf_type = DTMF_NONE;
}
} else if (!strcasecmp(var, "NDLB-force-rport")) {
- if (switch_true(val)) {
+ if (val && !strcasecmp(val, "safe")) {
+ profile->rport_level = 3;
+ } else if (switch_true(val)) {
profile->rport_level = 2;
}
} else if (!strcasecmp(var, "auto-rtp-bugs")) {