mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-05 20:55:26 +00:00
Occasionally SIP message transactions are not found when they should be. In the particular case an incoming INVITE transaction is CANCELed but the INVITE transaction cannot be found so a 481 response is returned for the CANCEL. The problematic calls have a '_' character in the Via branch parameter. The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. The problem with the "own tolower" code is that it does not calculate the same hash value as when the pj_tolower() function is used. The "own tolower" code will erroneously modify the ASCII characters '@', '[', '\\', ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a result you may not be able to find a hash tabled entry because the calculated hash values would differ. * Simply disable PJ_HASH_USE_OWN_TOLOWER. ASTERISK-26490 #close Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253
75 lines
2.3 KiB
C
75 lines
2.3 KiB
C
/*
|
|
* Asterisk config_site.h
|
|
*/
|
|
|
|
#include <sys/select.h>
|
|
|
|
/*
|
|
* Since both pjproject and asterisk source files will include config_site.h,
|
|
* we need to make sure that only pjproject source files include asterisk_malloc_debug.h.
|
|
*/
|
|
#if defined(MALLOC_DEBUG) && !defined(_ASTERISK_ASTMM_H)
|
|
#include "asterisk_malloc_debug.h"
|
|
#endif
|
|
|
|
/*
|
|
* Defining PJMEDIA_HAS_SRTP to 0 does NOT disable Asterisk's ability to use srtp.
|
|
* It only disables the pjmedia srtp transport which Asterisk doesn't use.
|
|
* The reason for the disable is that while Asterisk works fine with older libsrtp
|
|
* versions, newer versions of pjproject won't compile with them.
|
|
*/
|
|
#define PJMEDIA_HAS_SRTP 0
|
|
|
|
#define PJ_HAS_IPV6 1
|
|
#define NDEBUG 1
|
|
#define PJ_MAX_HOSTNAME (256)
|
|
#define PJSIP_MAX_URL_SIZE (512)
|
|
#ifdef PJ_HAS_LINUX_EPOLL
|
|
#define PJ_IOQUEUE_MAX_HANDLES (5000)
|
|
#else
|
|
#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE)
|
|
#endif
|
|
#define PJ_IOQUEUE_HAS_SAFE_UNREG 1
|
|
#define PJ_IOQUEUE_MAX_EVENTS_IN_SINGLE_POLL (16)
|
|
|
|
#define PJ_SCANNER_USE_BITWISE 0
|
|
#define PJ_OS_HAS_CHECK_STACK 0
|
|
#define PJ_LOG_MAX_LEVEL 6
|
|
#define PJ_ENABLE_EXTRA_CHECK 1
|
|
#define PJSIP_MAX_TSX_COUNT ((64*1024)-1)
|
|
#define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1)
|
|
#define PJSIP_UDP_SO_SNDBUF_SIZE (512*1024)
|
|
#define PJSIP_UDP_SO_RCVBUF_SIZE (512*1024)
|
|
#define PJ_DEBUG 0
|
|
#define PJSIP_SAFE_MODULE 0
|
|
#define PJ_HAS_STRICMP_ALNUM 0
|
|
|
|
/*
|
|
* Do not ever enable PJ_HASH_USE_OWN_TOLOWER because the algorithm is
|
|
* inconsistently used when calculating the hash value and doesn't
|
|
* convert the same characters as pj_tolower()/tolower(). Thus you
|
|
* can get different hash values if the string hashed has certain
|
|
* characters in it. (ASCII '@', '[', '\\', ']', '^', and '_')
|
|
*/
|
|
#undef PJ_HASH_USE_OWN_TOLOWER
|
|
|
|
/*
|
|
It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined.
|
|
Enabling it will result in SEGFAULTS when URIs containing escape sequences are encountered.
|
|
*/
|
|
#undef PJSIP_UNESCAPE_IN_PLACE
|
|
#define PJSIP_MAX_PKT_LEN 6000
|
|
|
|
#undef PJ_TODO
|
|
#define PJ_TODO(x)
|
|
|
|
/* Defaults too low for WebRTC */
|
|
#define PJ_ICE_MAX_CAND 32
|
|
#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND)
|
|
|
|
/* Increase limits to allow more formats */
|
|
#define PJMEDIA_MAX_SDP_FMT 64
|
|
#define PJMEDIA_MAX_SDP_BANDW 4
|
|
#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4)
|
|
#define PJMEDIA_MAX_SDP_MEDIA 16
|