diff options
author | Mark Spencer <markster@digium.com> | 2004-07-18 20:50:37 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2004-07-18 20:50:37 +0000 |
commit | 73f91fcc44e2c38e93a35c60d35745745b9afe28 (patch) | |
tree | a3d5b5550d2ce676ff0bc10b70b46754722b4723 /channels | |
parent | 8a4967294f3a9d2ec34aa72a5aeaf1c90da620fe (diff) |
Grab the Message-ID too
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3473 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_zap.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c index d5d17f400..4cdc98b2c 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -4972,6 +4972,35 @@ static void *ss_thread(void *data) case SIG_FXSLS: case SIG_FXSGS: case SIG_FXSKS: + if (p->pri) { + /* This is a GR-303 trunk actually. Wait for the first ring... */ + struct ast_frame *f; + int res; + time_t start; + + time(&start); + ast_setstate(chan, AST_STATE_RING); + while(time(NULL) < start + 3) { + res = ast_waitfor(chan, 1000); + if (res) { + f = ast_read(chan); + if (!f) { + ast_log(LOG_WARNING, "Whoa, hangup while waiting for first ring!\n"); + ast_hangup(chan); + return NULL; + } else if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_RING)) { + res = 1; + } else + res = 0; + ast_frfree(f); + if (res) { + ast_log(LOG_DEBUG, "Got ring!\n"); + res = 0; + break; + } + } + } + } if (p->use_callerid) { cs = callerid_new(); if (cs) { |