- /* timestamp */
- if (config->timelimit) {
- /* If there is a time limit, return now */
- elapsed_ms = ast_tvdiff_ms(ast_tvnow(), config->start_time);
- time_left_ms = config->timelimit - elapsed_ms;
-
- if (*playitagain &&
- ((ast_test_flag(&(config->features_caller), AST_FEATURE_PLAY_WARNING)) ||
- (ast_test_flag(&(config->features_callee), AST_FEATURE_PLAY_WARNING))) &&
- (config->play_warning && time_left_ms <= config->play_warning)) {
- if (config->warning_freq == 0 || time_left_ms == config->play_warning || (time_left_ms % config->warning_freq) <= 50) {
- res = AST_BRIDGE_RETRY;
- break;
- }
- }
- if (time_left_ms <= 0) {
- res = AST_BRIDGE_RETRY;
- break;
- }
- if (time_left_ms >= 5000 && *playit) {
- res = AST_BRIDGE_RETRY;
- break;
- }
- to = time_left_ms;
- } else
- to = -1;
-
- who = ast_waitfor_n(cs, 2, &to);