diff --git a/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch b/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch new file mode 100644 index 0000000000000000000000000000000000000000..ecf6c943246548ef1e2faa89f83bb2d8d84dfee2 --- /dev/null +++ b/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch @@ -0,0 +1,53 @@ +Index: pjsip/include/pjsip/sip_config.h +=================================================================== +--- a/pjsip/include/pjsip/sip_config.h (revision 6050) ++++ b/pjsip/include/pjsip/sip_config.h (working copy) +@@ -1190,6 +1190,20 @@ + # define PJSIP_AUTH_CACHED_POOL_MAX_SIZE (20 * 1024) + #endif + ++ ++/** ++ * Specify whether the cnonce used for SIP authentication contain digits only. ++ * The "cnonce" value is setup using GUID generator, i.e: ++ * pj_create_unique_string(), and the GUID string may contain hyphen character ++ * ("-"). Some SIP servers do not like this GUID format, so this option will ++ * strip any hyphens from the GUID string. ++ * ++ * Default is 1 (cnonce will only contain digit characters). ++ */ ++#ifndef PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY ++# define PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY 1 ++#endif ++ + /***************************************************************************** + * SIP Event framework and presence settings. + */ +Index: pjsip/src/pjsip/sip_auth_client.c +=================================================================== +--- a/pjsip/src/pjsip/sip_auth_client.c (revision 6050) ++++ b/pjsip/src/pjsip/sip_auth_client.c (working copy) +@@ -396,7 +396,23 @@ + + /* Create cnonce */ + pj_create_unique_string( cached_auth->pool, &cached_auth->cnonce ); ++#if defined(PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY) && \ ++ PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY!=0 ++ if (pj_strchr(&cached_auth->cnonce, '-')) { ++ /* remove hyphen character. */ ++ int w, r, len = pj_strlen(&cached_auth->cnonce); ++ char *s = cached_auth->cnonce.ptr; + ++ w = r = 0; ++ for (; r < len; r++) { ++ if (s[r] != '-') ++ s[w++] = s[r]; ++ } ++ s[w] = '\0'; ++ cached_auth->cnonce.slen = w; ++ } ++#endif ++ + /* Initialize nonce-count */ + cached_auth->nc = 1; +