diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 192b5fe76f..fe48778058 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -9395,8 +9395,11 @@ static int dahdi_indicate(struct ast_channel *chan, int condition, const void *d if ((ast_channel_state(chan) != AST_STATE_RING) || ((p->sig != SIG_FXSKS) && (p->sig != SIG_FXSLS) && - (p->sig != SIG_FXSGS))) - ast_setstate(chan, AST_STATE_RINGING); + (p->sig != SIG_FXSGS))) { + /* We're playing audible ringback tone on the channel, + * so set state to AST_STATE_RING, not AST_STATE_RINGING. */ + ast_setstate(chan, AST_STATE_RING); + } } break; case AST_CONTROL_INCOMPLETE: diff --git a/include/asterisk/channelstate.h b/include/asterisk/channelstate.h index 08f908256d..e453c6f2fe 100644 --- a/include/asterisk/channelstate.h +++ b/include/asterisk/channelstate.h @@ -37,8 +37,8 @@ enum ast_channel_state { AST_STATE_RESERVED, /*!< Channel is down, but reserved */ AST_STATE_OFFHOOK, /*!< Channel is off hook */ AST_STATE_DIALING, /*!< Digits (or equivalent) have been dialed */ - AST_STATE_RING, /*!< Line is ringing */ - AST_STATE_RINGING, /*!< Remote end is ringing */ + AST_STATE_RING, /*!< Remote end is ringing (e.g. listening to audible ringback tone). Also often used for initial state for a new channel. */ + AST_STATE_RINGING, /*!< Line is ringing */ AST_STATE_UP, /*!< Line is up */ AST_STATE_BUSY, /*!< Line is busy */ AST_STATE_DIALING_OFFHOOK, /*!< Digits (or equivalent) have been dialed while offhook */ diff --git a/main/devicestate.c b/main/devicestate.c index a964f64f6d..a47d1df1c5 100644 --- a/main/devicestate.c +++ b/main/devicestate.c @@ -179,8 +179,8 @@ static const struct chan2dev { { AST_STATE_RESERVED, AST_DEVICE_INUSE }, { AST_STATE_OFFHOOK, AST_DEVICE_INUSE }, { AST_STATE_DIALING, AST_DEVICE_INUSE }, - { AST_STATE_RING, AST_DEVICE_INUSE }, - { AST_STATE_RINGING, AST_DEVICE_RINGING }, + { AST_STATE_RING, AST_DEVICE_INUSE }, /* Audible ringback tone */ + { AST_STATE_RINGING, AST_DEVICE_RINGING }, /* Actual ringing */ { AST_STATE_UP, AST_DEVICE_INUSE }, { AST_STATE_BUSY, AST_DEVICE_BUSY }, { AST_STATE_DIALING_OFFHOOK, AST_DEVICE_INUSE },