pjproject: bump to version 2.9
[feed/telephony.git] / libs / pjproject / patches / 0020-patch_cnonce_only_digits_option.patch
diff --git a/libs/pjproject/patches/0020-patch_cnonce_only_digits_option.patch b/libs/pjproject/patches/0020-patch_cnonce_only_digits_option.patch
new file mode 100644 (file)
index 0000000..ecf6c94
--- /dev/null
@@ -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;