mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 02:26:23 +00:00
Add a flag that indicates whether a SIP dialog is an outgoing call or not. SIP_OUTGOING originally did it but it was repurposed to the direction of the last transaction, which can cause update_call_counter to falsely decrease the wrong counters. (please don't hurt me oej) (issue #8943 reported by mdu113)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@55914 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -778,6 +778,7 @@ struct sip_auth {
|
|||||||
#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (1 << 24) /*!< 24: Inactive */
|
#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (1 << 24) /*!< 24: Inactive */
|
||||||
#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: ???? */
|
#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: ???? */
|
||||||
#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< 26: Buggy CISCO MWI fix */
|
#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< 26: Buggy CISCO MWI fix */
|
||||||
|
#define SIP_PAGE2_OUTGOING_CALL (1 << 27) /*!< 27: Is this an outgoing call? */
|
||||||
|
|
||||||
#define SIP_PAGE2_FLAGS_TO_COPY \
|
#define SIP_PAGE2_FLAGS_TO_COPY \
|
||||||
(SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_VIDEOSUPPORT | \
|
(SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_VIDEOSUPPORT | \
|
||||||
@@ -2992,7 +2993,7 @@ static int update_call_counter(struct sip_pvt *fup, int event)
|
|||||||
{
|
{
|
||||||
char name[256];
|
char name[256];
|
||||||
int *inuse = NULL, *call_limit = NULL, *inringing = NULL;
|
int *inuse = NULL, *call_limit = NULL, *inringing = NULL;
|
||||||
int outgoing = ast_test_flag(&fup->flags[0], SIP_OUTGOING);
|
int outgoing = ast_test_flag(&fup->flags[1], SIP_PAGE2_OUTGOING_CALL);
|
||||||
struct sip_user *u = NULL;
|
struct sip_user *u = NULL;
|
||||||
struct sip_peer *p = NULL;
|
struct sip_peer *p = NULL;
|
||||||
|
|
||||||
@@ -15257,6 +15258,8 @@ static struct ast_channel *sip_request_call(const char *type, int format, void *
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ast_set_flag(&p->flags[1], SIP_PAGE2_OUTGOING_CALL);
|
||||||
|
|
||||||
if (!(p->options = ast_calloc(1, sizeof(*p->options)))) {
|
if (!(p->options = ast_calloc(1, sizeof(*p->options)))) {
|
||||||
sip_destroy(p);
|
sip_destroy(p);
|
||||||
ast_log(LOG_ERROR, "Unable to build option SIP data structure - Out of memory\n");
|
ast_log(LOG_ERROR, "Unable to build option SIP data structure - Out of memory\n");
|
||||||
|
Reference in New Issue
Block a user