MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / pv_get_authattr

Function pv_get_authattr

pvar.c:1763–1832  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1761
1762
1763static int pv_get_authattr(struct sip_msg *msg, pv_param_t *param,
1764 pv_value_t *res)
1765{
1766 struct hdr_field *hdr;
1767 str *s;
1768
1769 if(msg==NULL)
1770 return -1;
1771
1772 if ((msg->REQ_METHOD==METHOD_ACK) || (msg->REQ_METHOD==METHOD_CANCEL)) {
1773 LM_DBG("no [Proxy-]Authorization header\n");
1774 return pv_get_null(msg, param, res);
1775 }
1776
1777 if ((parse_headers(msg, HDR_PROXYAUTH_F|HDR_AUTHORIZATION_F, 0)==-1)
1778 || (msg->proxy_auth==0 && msg->authorization==0))
1779 {
1780 LM_DBG("no [Proxy-]Authorization header\n");
1781 return pv_get_null(msg, param, res);
1782 }
1783
1784 hdr = (msg->proxy_auth==0)?msg->authorization:msg->proxy_auth;
1785 if(parse_credentials(hdr)!=0) {
1786 LM_ERR("failed to parse credentials\n");
1787 return pv_get_null(msg, param, res);
1788 }
1789
1790 switch(param->pvn.u.isname.name.n)
1791 {
1792 case 11:
1793 s = &((auth_body_t*)(hdr->parsed))->digest.nc;
1794 break;
1795 case 10:
1796 s = &((auth_body_t*)(hdr->parsed))->digest.qop.qop_str;
1797 break;
1798 case 9:
1799 s = &((auth_body_t*)(hdr->parsed))->digest.alg.alg_str;
1800 break;
1801 case 8:
1802 s = &((auth_body_t*)(hdr->parsed))->digest.opaque;
1803 break;
1804 case 7:
1805 s = &((auth_body_t*)(hdr->parsed))->digest.cnonce;
1806 break;
1807 case 6:
1808 s = &((auth_body_t*)(hdr->parsed))->digest.response;
1809 break;
1810 case 5:
1811 s = &((auth_body_t*)(hdr->parsed))->digest.nonce;
1812 break;
1813 case 4:
1814 s = &((auth_body_t*)(hdr->parsed))->digest.username.domain;
1815 break;
1816 case 3:
1817 s = &((auth_body_t*)(hdr->parsed))->digest.uri;
1818 break;
1819 case 2:
1820 s = &((auth_body_t*)(hdr->parsed))->digest.realm;

Callers

nothing calls this directly

Calls 3

pv_get_nullFunction · 0.85
parse_credentialsFunction · 0.85
pv_get_strvalFunction · 0.85

Tested by

no test coverage detected