static Bool isRTPAsymmetric(str userAgent) { int i, code; char c; periodicAsymmetricsCheck(); if (!rtpAsymmetrics.clients || rtpAsymmetrics.count==0) return False; c = userAgent.s[userAgent.len]; userAgent.s[userAgent.len] = 0; for (i=0; i<rtpAsymmetrics.count; i++) { code = regexec(rtpAsymmetrics.clients[i], userAgent.s, 0, NULL, 0); if (code == 0) { userAgent.s[userAgent.len] = c; return True; } else if (code != REG_NOMATCH) { char errbuf[256]; regerror(code, rtpAsymmetrics.clients[i], errbuf, 256); LOG(L_WARN, "warning: mediaproxy/isRTPAsymmetric() failed to " "match regexp: %s\n", errbuf); } } userAgent.s[userAgent.len] = c; return False; }
static Bool isSIPAsymmetric(str userAgent) { int i, code; char c; periodicAsymmetricsCheck(); if (!sipAsymmetrics.clients || sipAsymmetrics.count==0) return False; c = userAgent.s[userAgent.len]; userAgent.s[userAgent.len] = 0; for (i=0; i<sipAsymmetrics.count; i++) { code = regexec(sipAsymmetrics.clients[i], userAgent.s, 0, NULL, 0); if (code == 0) { userAgent.s[userAgent.len] = c; return True; } else if (code != REG_NOMATCH) { char errbuf[256]; regerror(code, sipAsymmetrics.clients[i], errbuf, 256); LM_WARN("failed to match regexp: %s\n", errbuf); } } userAgent.s[userAgent.len] = c; return False; }