diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index b6280ce0b4..2fddfe3d57 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -4463,7 +4463,10 @@ static int misdn_set_opt_exec(struct ast_channel *chan, void *data) if (strlen(tok) > 1 && tok[1]=='1') { chan_misdn_log(1, ch->bc->port, "SETOPT: HDLC \n"); - ch->bc->hdlc=1; + if (!ch->bc->hdlc) { + ch->bc->hdlc=1; + misdn_lib_setup_bc(ch->bc); + } } ch->bc->capability=INFO_CAPABILITY_DIGITAL_UNRESTRICTED; break; diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index c0fdf31d8d..ce25791a4f 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -882,6 +882,7 @@ static int create_process (int midev, struct misdn_bchannel *bc) { void misdn_lib_setup_bc(struct misdn_bchannel *bc) { + clean_up_bc(bc); setup_bc(bc); }