summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-07-18 20:50:37 +0000
committerMark Spencer <markster@digium.com>2004-07-18 20:50:37 +0000
commit73f91fcc44e2c38e93a35c60d35745745b9afe28 (patch)
treea3d5b5550d2ce676ff0bc10b70b46754722b4723 /channels
parent8a4967294f3a9d2ec34aa72a5aeaf1c90da620fe (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-xchannels/chan_zap.c29
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) {