}
ast_channel_generatordata_set(chan, NULL);
ast_channel_generator_set(chan, NULL);
- ast_channel_set_fd(chan, AST_GENERATOR_FD, -1);
ast_clear_flag(ast_channel_flags(chan), AST_FLAG_WRITE_INT);
ast_settimeout(chan, 0, NULL, NULL);
}
break;
}
- } else if (ast_channel_fd_isset(chan, AST_GENERATOR_FD) && ast_channel_fdno(chan) == AST_GENERATOR_FD) {
- /* if the AST_GENERATOR_FD is set, call the generator with args
- * set to -1 so it can do whatever it needs to.
- */
- void *tmp = ast_channel_generatordata(chan);
- ast_channel_generatordata_set(chan, NULL); /* reset to let ast_write get through */
- ast_channel_generator(chan)->generate(chan, tmp, -1, -1);
- ast_channel_generatordata_set(chan, tmp);
- f = &ast_null_frame;
- ast_channel_fdno_set(chan, -1);
- goto done;
} else if (ast_channel_fd_isset(chan, AST_JITTERBUFFER_FD) && ast_channel_fdno(chan) == AST_JITTERBUFFER_FD) {
ast_clear_flag(ast_channel_flags(chan), AST_FLAG_EXCEPTION);
}
int origstate;
unsigned int orig_disablestatecache;
unsigned int clone_disablestatecache;
- int generator_fd;
int visible_indication;
int clone_hold_state;
int moh_is_playing;
/* Keep the same parkinglot. */
ast_channel_parkinglot_set(original, ast_channel_parkinglot(clonechan));
- /* Clear all existing file descriptors but retain the generator */
- generator_fd = ast_channel_fd(original, AST_GENERATOR_FD);
+ /* Clear all existing file descriptors */
ast_channel_internal_fd_clear_all(original);
- ast_channel_set_fd(original, AST_GENERATOR_FD, generator_fd);
- /* Copy all file descriptors present on clonechan to original, skipping generator */
+ /* Copy all file descriptors present on clonechan to original */
for (x = 0; x < ast_channel_fd_count(clonechan); x++) {
- if (x != AST_GENERATOR_FD)
- ast_channel_set_fd(original, x, ast_channel_fd(clonechan, x));
+ ast_channel_set_fd(original, x, ast_channel_fd(clonechan, x));
}
ast_app_group_update(clonechan, original);