Issue 9869 - replace malloc and memset with ast_calloc, and other coding guidelines...
authorTilghman Lesher <tilghman@meg.abyt.es>
Wed, 6 Jun 2007 21:20:11 +0000 (21:20 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Wed, 6 Jun 2007 21:20:11 +0000 (21:20 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@67864 65c4cc65-6c06-0410-ace0-fbb531ad65f3

94 files changed:
apps/app_adsiprog.c
apps/app_alarmreceiver.c
apps/app_dial.c
apps/app_directory.c
apps/app_externalivr.c
apps/app_festival.c
apps/app_followme.c
apps/app_macro.c
apps/app_meetme.c
apps/app_milliwatt.c
apps/app_minivm.c
apps/app_mixmonitor.c
apps/app_osplookup.c
apps/app_queue.c
apps/app_readfile.c
apps/app_rpt.c
apps/app_speech_utils.c
apps/app_voicemail.c
cdr/cdr_adaptive_odbc.c
cdr/cdr_odbc.c
cdr/cdr_pgsql.c
cdr/cdr_sqlite.c
cdr/cdr_tds.c
channels/chan_agent.c
channels/chan_gtalk.c
channels/chan_iax2.c
channels/chan_local.c
channels/chan_mgcp.c
channels/chan_misdn.c
channels/chan_oss.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_vpb.cc
channels/chan_zap.c
channels/iax2-parser.c
channels/iax2-provision.c
channels/misdn_config.c
codecs/codec_lpc10.c
codecs/codec_zap.c
funcs/func_callerid.c
funcs/func_curl.c
funcs/func_devstate.c
funcs/func_enum.c
funcs/func_odbc.c
funcs/func_strings.c
main/acl.c
main/app.c
main/asterisk.c
main/autoservice.c
main/callerid.c
main/cdr.c
main/channel.c
main/chanvars.c
main/cli.c
main/config.c
main/db.c
main/devicestate.c
main/dial.c
main/dlfcn.c
main/dnsmgr.c
main/dsp.c
main/enum.c
main/event.c
main/file.c
main/fixedjitterbuf.c
main/frame.c
main/http.c
main/indications.c
main/io.c
main/jitterbuf.c
main/loader.c
main/manager.c
main/netsock.c
main/pbx.c
main/rtp.c
main/say.c
main/sched.c
main/strcompat.c
main/tdd.c
main/threadstorage.c
main/translate.c
main/udptl.c
main/utils.c
res/res_agi.c
res/res_config_pgsql.c
res/res_config_sqlite.c
res/res_features.c
res/res_indications.c
res/res_jabber.c
res/res_monitor.c
res/res_musiconhold.c
res/res_odbc.c
res/res_smdi.c
res/res_speech.c

index 4033015..b07a950 100644 (file)
@@ -1384,11 +1384,11 @@ static struct adsi_script *compile_script(char *script)
                break;
        case STATE_INSUB:
                ast_log(LOG_WARNING, "Missing ENDSUB at end of file %s\n", script);
-               free(scr);
+               ast_free(scr);
                return NULL;
        case STATE_INKEY:
                ast_log(LOG_WARNING, "Missing ENDKEY at end of file %s\n", script);
-               free(scr);
+               ast_free(scr);
                return NULL;
        }
        err = 0;
@@ -1414,7 +1414,7 @@ static struct adsi_script *compile_script(char *script)
        }
 
        if (err) {
-               free(scr);
+               ast_free(scr);
                return NULL;
        }
        return scr;
@@ -1451,7 +1451,7 @@ static int adsi_prog(struct ast_channel *chan, char *script)
                if (option_verbose > 2)
                        ast_verbose(VERBOSE_PREFIX_3 "User rejected download attempt\n");
                ast_log(LOG_NOTICE, "User rejected download on channel %s\n", chan->name);
-               free(scr);
+               ast_free(scr);
                return -1;
        }
 
@@ -1538,10 +1538,10 @@ static int adsi_prog(struct ast_channel *chan, char *script)
                if (option_verbose > 2)
                        ast_verbose(VERBOSE_PREFIX_3 "Download attempt failed\n");
                ast_log(LOG_NOTICE, "Download failed on %s\n", chan->name);
-               free(scr);
+               ast_free(scr);
                return -1;
        }
-       free(scr);
+       ast_free(scr);
        ast_adsi_unload_session(chan);
        return 0;
 }
index e74a7b4..56f604f 100644 (file)
@@ -727,7 +727,7 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data)
        for(elp = event_head; (elp != NULL);){
                efree = elp;
                elp = elp->next;
-               free(efree);
+               ast_free(efree);
        }
 
 
index f713f33..0d30dc1 100644 (file)
@@ -312,7 +312,7 @@ static void hanguptree(struct chanlist *outgoing, struct ast_channel *exception)
                        ast_hangup(outgoing->chan);
                oo = outgoing;
                outgoing=outgoing->next;
-               free(oo);
+               ast_free(oo);
        }
 }
 
@@ -1327,7 +1327,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        handle_cause(cause, &num);
                        if (!rest)      /* we are on the last destination */
                                chan->hangupcause = cause;
-                       free(tmp);
+                       ast_free(tmp);
                        continue;
                }
                pbx_builtin_setvar_helper(tc, "DIALEDPEERNUMBER", numsubst);
@@ -1374,7 +1374,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        }
                        if (!tc) {
                                handle_cause(cause, &num);
-                               free(tmp);
+                               ast_free(tmp);
                                continue;
                        }
                }
@@ -1436,7 +1436,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                ast_verbose(VERBOSE_PREFIX_3 "Couldn't call %s\n", numsubst);
                        ast_hangup(tc);
                        tc = NULL;
-                       free(tmp);
+                       ast_free(tmp);
                        continue;
                } else {
                        senddialevent(chan, tc);
index 8a62c65..0346d64 100644 (file)
@@ -463,14 +463,14 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, struct
                                                        if (!strncmp(conv, ext, strlen(ext))) {
                                                                /* Match! */
                                                                found++;
-                                                               free(conv);
-                                                               free(start);
+                                                               ast_free(conv);
+                                                               ast_free(start);
                                                                break;
                                                        }
-                                                       free(conv);
+                                                       ast_free(conv);
                                                }
                                        }
-                                       free(start);
+                                       ast_free(start);
                                }
                                v = v->next;
                        }
@@ -547,10 +547,10 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, struct
                                                        default:
                                                                break;
                                                        }
-                                                       free(conv);
+                                                       ast_free(conv);
                                                        break;
                                                }
-                                               free(conv);
+                                               ast_free(conv);
                                        }
                                }
                        }
index 7f20716..f08e42a 100644 (file)
@@ -136,7 +136,7 @@ static void gen_release(struct ast_channel *chan, void *data)
        struct gen_state *state = data;
 
        gen_closestream(state);
-       free(data);
+       ast_free(data);
 }
 
 /* caller has the playlist locked */
@@ -399,7 +399,7 @@ static int app_exec(struct ast_channel *chan, void *data)
                                AST_LIST_LOCK(&u->finishlist);
                                while ((entry = AST_LIST_REMOVE_HEAD(&u->finishlist, list))) {
                                        send_child_event(child_events, 'F', entry->filename, chan);
-                                       free(entry);
+                                       ast_free(entry);
                                }
                                AST_LIST_UNLOCK(&u->finishlist);
                        }
@@ -422,7 +422,7 @@ static int app_exec(struct ast_channel *chan, void *data)
                                                AST_LIST_LOCK(&u->playlist);
                                                while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list))) {
                                                        send_child_event(child_events, 'D', entry->filename, chan);
-                                                       free(entry);
+                                                       ast_free(entry);
                                                }
                                                if (!u->playing_silence)
                                                        u->abort_current_sound = 1;
@@ -467,7 +467,7 @@ static int app_exec(struct ast_channel *chan, void *data)
                                        AST_LIST_LOCK(&u->playlist);
                                        while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list))) {
                                                send_child_event(child_events, 'D', entry->filename, chan);
-                                               free(entry);
+                                               ast_free(entry);
                                        }
                                        if (!u->playing_silence)
                                                u->abort_current_sound = 1;
@@ -569,7 +569,7 @@ static int app_exec(struct ast_channel *chan, void *data)
                close(child_stderr[1]);
 
        while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list)))
-               free(entry);
+               ast_free(entry);
 
        ast_module_user_remove(lu);
 
index 22a799f..dbc9d62 100644 (file)
@@ -525,7 +525,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
                                ast_log(LOG_DEBUG,"Festival WV command\n");
                        waveform = socket_receive_file_to_buff(fd,&filesize);
                        res = send_waveform_to_channel(chan,waveform,filesize, intstr);
-                       free(waveform);
+                       ast_free(waveform);
                        break;
                }
                else if (strcmp(ack,"LP\n") == 0) {   /* receive an s-expr */
@@ -534,7 +534,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
                        waveform = socket_receive_file_to_buff(fd,&filesize);
                        waveform[filesize]='\0';
                        ast_log(LOG_WARNING,"Festival returned LP : %s\n",waveform);
-                       free(waveform);
+                       ast_free(waveform);
                } else if (strcmp(ack,"ER\n") == 0) {    /* server got an error */
                        ast_log(LOG_WARNING,"Festival returned ER\n");
                        res=-1;
index 2e313d0..37c81d1 100644 (file)
@@ -172,17 +172,17 @@ static void free_numbers(struct call_followme *f)
 
        while ((prev = AST_LIST_REMOVE_HEAD(&f->numbers, entry)))
                /* Free the number */
-               free(prev);
+               ast_free(prev);
        AST_LIST_HEAD_INIT_NOLOCK(&f->numbers);
 
        while ((prev = AST_LIST_REMOVE_HEAD(&f->blnumbers, entry)))
                /* Free the blacklisted number */
-               free(prev);
+               ast_free(prev);
        AST_LIST_HEAD_INIT_NOLOCK(&f->blnumbers);
 
        while ((prev = AST_LIST_REMOVE_HEAD(&f->wlnumbers, entry)))
                /* Free the whitelisted number */
-               free(prev);
+               ast_free(prev);
        AST_LIST_HEAD_INIT_NOLOCK(&f->wlnumbers);
        
 }
@@ -815,7 +815,7 @@ static void findmeexec(struct fm_args *tpargs)
                        tmpuser = ast_calloc(1, sizeof(*tmpuser));
                        if (!tmpuser) {
                                ast_log(LOG_WARNING, "Out of memory!\n");
-                               free(findme_user_list);
+                               ast_free(findme_user_list);
                                return;
                        }
                                        
@@ -872,7 +872,7 @@ static void findmeexec(struct fm_args *tpargs)
                        if (!fmuser->cleared && fmuser->ochan != winner)
                                clear_caller(fmuser);
                        AST_LIST_REMOVE_CURRENT(findme_user_list, entry);
-                       free(fmuser);
+                       ast_free(fmuser);
                }
                AST_LIST_TRAVERSE_SAFE_END
                fmuser = NULL;
@@ -883,7 +883,7 @@ static void findmeexec(struct fm_args *tpargs)
 
                if (!caller) {
                        tpargs->status = 1;
-                       free(findme_user_list);
+                       ast_free(findme_user_list);
                        return; 
                }
 
@@ -893,7 +893,7 @@ static void findmeexec(struct fm_args *tpargs)
                                break;
 
        }
-       free(findme_user_list);
+       ast_free(findme_user_list);
        if (!winner) 
                tpargs->status = 1;
        else {
@@ -1012,7 +1012,7 @@ static int app_exec(struct ast_channel *chan, void *data)
                                
                AST_LIST_TRAVERSE_SAFE_BEGIN(&targs.cnumbers, nm, entry) {
                        AST_LIST_REMOVE_CURRENT(&targs.cnumbers, entry);
-                       free(nm);
+                       ast_free(nm);
                }
                AST_LIST_TRAVERSE_SAFE_END
        
@@ -1075,7 +1075,7 @@ static int unload_module(void)
        AST_LIST_LOCK(&followmes);
        while ((f = AST_LIST_REMOVE_HEAD(&followmes, entry))) {
                free_numbers(f);
-               free(f);
+               ast_free(f);
        }
 
        AST_LIST_UNLOCK(&followmes);
index 625c454..21f65f1 100644 (file)
@@ -422,7 +422,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
                if (oldargs[x]) {
                        if (!dead)
                                pbx_builtin_setvar_helper(chan, varname, oldargs[x]);
-                       free(oldargs[x]);
+                       ast_free(oldargs[x]);
                } else if (!dead) {
                        pbx_builtin_setvar_helper(chan, varname, NULL);
                }
@@ -435,11 +435,11 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
                pbx_builtin_setvar_helper(chan, "MACRO_PRIORITY", save_macro_priority);
        }
        if (save_macro_exten)
-               free(save_macro_exten);
+               ast_free(save_macro_exten);
        if (save_macro_context)
-               free(save_macro_context);
+               ast_free(save_macro_context);
        if (save_macro_priority)
-               free(save_macro_priority);
+               ast_free(save_macro_priority);
 
        if (!dead && setmacrocontext) {
                chan->macrocontext[0] = '\0';
@@ -470,7 +470,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
        if (!dead)
                pbx_builtin_setvar_helper(chan, "MACRO_OFFSET", save_macro_offset);
        if (save_macro_offset)
-               free(save_macro_offset);
+               ast_free(save_macro_offset);
 
        /* Unlock the macro */
        if (exclusive) {
index 91d5902..9851066 100644 (file)
@@ -765,7 +765,7 @@ static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin
                cnf->fd = open("/dev/zap/pseudo", O_RDWR);
                if (cnf->fd < 0) {
                        ast_log(LOG_WARNING, "Unable to open pseudo device\n");
-                       free(cnf);
+                       ast_free(cnf);
                        cnf = NULL;
                        goto cnfout;
                }
@@ -780,7 +780,7 @@ static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin
                        ast_hangup(cnf->chan);
                else
                        close(cnf->fd);
-               free(cnf);
+               ast_free(cnf);
                cnf = NULL;
                goto cnfout;
        }
@@ -1247,7 +1247,7 @@ static int conf_free(struct ast_conference *conf)
        else
                close(conf->fd);
        
-       free(conf);
+       ast_free(conf);
 
        return 0;
 }
@@ -2278,7 +2278,7 @@ bailoutandtrynormal:
                snprintf(meetmesecs, sizeof(meetmesecs), "%d", (int) (time(NULL) - user->jointime));
                pbx_builtin_setvar_helper(chan, "MEETMESECS", meetmesecs);
        }
-       free(user);
+       ast_free(user);
        AST_LIST_UNLOCK(&confs);
 
        return ret;
@@ -3348,9 +3348,9 @@ static void sla_stop_ringing_trunk(struct sla_ringing_trunk *ringing_trunk)
        sla_change_trunk_state(ringing_trunk->trunk, SLA_TRUNK_STATE_IDLE, ALL_TRUNK_REFS, NULL);
 
        while ((station_ref = AST_LIST_REMOVE_HEAD(&ringing_trunk->timed_out_stations, entry)))
-               free(station_ref);
+               ast_free(station_ref);
 
-       free(ringing_trunk);
+       ast_free(ringing_trunk);
 }
 
 static void sla_stop_ringing_station(struct sla_ringing_station *ringing_station,
@@ -3385,7 +3385,7 @@ static void sla_stop_ringing_station(struct sla_ringing_station *ringing_station
        }
 
 done:
-       free(ringing_station);
+       ast_free(ringing_station);
 }
 
 static void sla_dial_state_callback(struct ast_dial *dial)
@@ -3496,8 +3496,8 @@ static void sla_handle_dial_state_event(void)
                        args.station = ringing_station->station;
                        args.cond = &cond;
                        args.cond_lock = &cond_lock;
-                       free(ringing_trunk);
-                       free(ringing_station);
+                       ast_free(ringing_trunk);
+                       ast_free(ringing_station);
                        ast_mutex_init(&cond_lock);
                        ast_cond_init(&cond, NULL);
                        ast_mutex_lock(&cond_lock);
@@ -3551,7 +3551,7 @@ static int sla_check_failed_station(const struct sla_station *station)
                        continue;
                if (ast_tvdiff_ms(ast_tvnow(), failed_station->last_try) > 1000) {
                        AST_LIST_REMOVE_CURRENT(&sla.failed_stations, entry);
-                       free(failed_station);
+                       ast_free(failed_station);
                        break;
                }
                res = 1;
@@ -3586,12 +3586,12 @@ static int sla_ring_station(struct sla_ringing_trunk *ringing_trunk, struct sla_
 
        if (!sla.attempt_callerid && !ast_strlen_zero(ringing_trunk->trunk->chan->cid.cid_name)) {
                cid_name = ast_strdupa(ringing_trunk->trunk->chan->cid.cid_name);
-               free(ringing_trunk->trunk->chan->cid.cid_name);
+               ast_free(ringing_trunk->trunk->chan->cid.cid_name);
                ringing_trunk->trunk->chan->cid.cid_name = NULL;
        }
        if (!sla.attempt_callerid && !ast_strlen_zero(ringing_trunk->trunk->chan->cid.cid_num)) {
                cid_num = ast_strdupa(ringing_trunk->trunk->chan->cid.cid_num);
-               free(ringing_trunk->trunk->chan->cid.cid_num);
+               ast_free(ringing_trunk->trunk->chan->cid.cid_num);
                ringing_trunk->trunk->chan->cid.cid_num = NULL;
        }
 
@@ -3753,7 +3753,7 @@ static void sla_hangup_stations(void)
                        ast_dial_join(ringing_station->station->dial);
                        ast_dial_destroy(ringing_station->station->dial);
                        ringing_station->station->dial = NULL;
-                       free(ringing_station);
+                       ast_free(ringing_station);
                }
        }
        AST_LIST_TRAVERSE_SAFE_END
@@ -4018,7 +4018,7 @@ static void *sla_thread(void *data)
                                sla_handle_ringing_trunk_event();
                                break;
                        }
-                       free(event);
+                       ast_free(event);
                        ast_mutex_lock(&sla.lock);
                }
        }
@@ -4026,10 +4026,10 @@ static void *sla_thread(void *data)
        ast_mutex_unlock(&sla.lock);
 
        while ((ringing_station = AST_LIST_REMOVE_HEAD(&sla.ringing_stations, entry)))
-               free(ringing_station);
+               ast_free(ringing_station);
 
        while ((failed_station = AST_LIST_REMOVE_HEAD(&sla.failed_stations, entry)))
-               free(failed_station);
+               ast_free(failed_station);
 
        return NULL;
 }
@@ -4072,12 +4072,12 @@ static void *dial_trunk(void *data)
 
        if (!sla.attempt_callerid && !ast_strlen_zero(trunk_ref->chan->cid.cid_name)) {
                cid_name = ast_strdupa(trunk_ref->chan->cid.cid_name);
-               free(trunk_ref->chan->cid.cid_name);
+               ast_free(trunk_ref->chan->cid.cid_name);
                trunk_ref->chan->cid.cid_name = NULL;
        }
        if (!sla.attempt_callerid && !ast_strlen_zero(trunk_ref->chan->cid.cid_num)) {
                cid_num = ast_strdupa(trunk_ref->chan->cid.cid_num);
-               free(trunk_ref->chan->cid.cid_num);
+               ast_free(trunk_ref->chan->cid.cid_num);
                trunk_ref->chan->cid.cid_num = NULL;
        }
 
@@ -4389,7 +4389,7 @@ static int sla_trunk_exec(struct ast_channel *chan, void *data)
        ast_mutex_unlock(&sla.lock);
        if (ringing_trunk) {
                sla_change_trunk_state(ringing_trunk->trunk, SLA_TRUNK_STATE_IDLE, ALL_TRUNK_REFS, NULL);
-               free(ringing_trunk);
+               ast_free(ringing_trunk);
                pbx_builtin_setvar_helper(chan, "SLATRUNK_STATUS", "UNANSWERED");
                /* Queue reprocessing of ringing trunks to make stations stop ringing
                 * that shouldn't be ringing after this trunk stopped. */
@@ -4457,10 +4457,10 @@ static void destroy_trunk(struct sla_trunk *trunk)
                ast_context_remove_extension(trunk->autocontext, "s", 1, sla_registrar);
 
        while ((station_ref = AST_LIST_REMOVE_HEAD(&trunk->stations, entry)))
-               free(station_ref);
+               ast_free(station_ref);
 
        ast_string_field_free_all(trunk);
-       free(trunk);
+       ast_free(trunk);
 }
 
 static void destroy_station(struct sla_station *station)
@@ -4483,10 +4483,10 @@ static void destroy_station(struct sla_station *station)
        }
 
        while ((trunk_ref = AST_LIST_REMOVE_HEAD(&station->trunks, entry)))
-               free(trunk_ref);
+               ast_free(trunk_ref);
 
        ast_string_field_free_all(station);
-       free(station);
+       ast_free(station);
 }
 
 static void sla_destroy(void)
@@ -4549,7 +4549,7 @@ static int sla_build_trunk(struct ast_config *cfg, const char *cat)
        if (!(trunk = ast_calloc(1, sizeof(*trunk))))
                return -1;
        if (ast_string_field_init(trunk, 32)) {
-               free(trunk);
+               ast_free(trunk);
                return -1;
        }
 
@@ -4654,7 +4654,7 @@ static void sla_add_trunk_to_station(struct sla_station *station, struct ast_var
        }
 
        if (!(station_ref = sla_create_station_ref(station))) {
-               free(trunk_ref);
+               ast_free(trunk_ref);
                return;
        }
        ast_atomic_fetchadd_int((int *) &trunk->num_stations, 1);
@@ -4678,7 +4678,7 @@ static int sla_build_station(struct ast_config *cfg, const char *cat)
        if (!(station = ast_calloc(1, sizeof(*station))))
                return -1;
        if (ast_string_field_init(station, 32)) {
-               free(station);
+               ast_free(station);
                return -1;
        }
 
index 5a2a9e1..31ded36 100644 (file)
@@ -59,7 +59,7 @@ static void *milliwatt_alloc(struct ast_channel *chan, void *params)
 
 static void milliwatt_release(struct ast_channel *chan, void *data)
 {
-       free(data);
+       ast_free(data);
        return;
 }
 
index 95a2b10..62b589c 100644 (file)
@@ -470,7 +470,7 @@ static struct minivm_template *message_template_create(const char *name)
 {
        struct minivm_template *template;
 
-       template = ast_calloc(1, sizeof(struct minivm_template));
+       template = ast_calloc(1, sizeof(*template));
        if (!template)
                return NULL;
 
@@ -488,9 +488,9 @@ static struct minivm_template *message_template_create(const char *name)
 static void message_template_free(struct minivm_template *template)
 {
        if (template->body)
-               free(template->body);
+               ast_free(template->body);
 
-       free (template);
+       ast_free (template);
 }
 
 /*! \brief Build message template from configuration */
@@ -524,7 +524,7 @@ static int message_template_build(const char *name, struct ast_variable *var)
                        ast_copy_string(template->charset, var->value, sizeof(template->charset));
                } else if (!strcasecmp(var->name, "templatefile")) {
                        if (template->body) 
-                               free(template->body);
+                               ast_free(template->body);
                        template->body = message_template_parse_filebody(var->value);
                        if (!template->body) {
                                ast_log(LOG_ERROR, "Error reading message body definition file %s\n", var->value);
@@ -532,7 +532,7 @@ static int message_template_build(const char *name, struct ast_variable *var)
                        }
                } else if (!strcasecmp(var->name, "messagebody")) {
                        if (template->body) 
-                               free(template->body);
+                               ast_free(template->body);
                        template->body = message_template_parse_emailbody(var->value);
                        if (!template->body) {
                                ast_log(LOG_ERROR, "Error parsing message body definition:\n          %s\n", var->value);
@@ -727,7 +727,7 @@ static void free_user(struct minivm_account *vmu)
 {
        if (vmu->chanvars)
                ast_variables_destroy(vmu->chanvars);
-       free(vmu);
+       ast_free(vmu);
 }
 
 
@@ -793,7 +793,7 @@ static struct minivm_account *mvm_user_alloc(void)
 {
        struct minivm_account *new;
 
-       new = calloc(1, sizeof(struct minivm_account));
+       new = ast_calloc(1, sizeof(*new));
        if (!new)
                return NULL;
        populate_defaults(new);
@@ -808,7 +808,7 @@ static void vmaccounts_destroy_list(void)
        struct minivm_account *this;
        AST_LIST_LOCK(&minivm_accounts);
        while ((this = AST_LIST_REMOVE_HEAD(&minivm_accounts, list))) 
-               free(this);
+               ast_free(this);
        AST_LIST_UNLOCK(&minivm_accounts);
 }
 
@@ -877,7 +877,7 @@ static struct minivm_account *find_user_realtime(const char *domain, const char
        var = ast_load_realtime("minivm", "username", username, "domain", domain, NULL);
 
        if (!var) {
-               free(retval);
+               ast_free(retval);
                return NULL;
        }
 
@@ -2201,7 +2201,7 @@ static int create_vmaccount(char *name, struct ast_variable *var, int realtime)
                ast_log(LOG_DEBUG, "Creating static account for user %s domain %s\n", username, domain);
 
        /* Allocate user account */
-       vmu = ast_calloc(1, sizeof(struct minivm_account));
+       vmu = ast_calloc(1, sizeof(*vmu));
        if (!vmu)
                return 0;
        
@@ -2277,7 +2277,7 @@ static int create_vmaccount(char *name, struct ast_variable *var, int realtime)
 /*! \brief Free Mini Voicemail timezone */
 static void free_zone(struct minivm_zone *z)
 {
-       free(z);
+       ast_free(z);
 }
 
 /*! \brief Clear list of timezones */
@@ -2299,21 +2299,21 @@ static int timezone_add(char *zonename, char *config)
        struct minivm_zone *newzone;
        char *msg_format, *timezone;
 
-       newzone = ast_calloc(1, sizeof(struct minivm_zone));
+       newzone = ast_calloc(1, sizeof(*newzone));
        if (newzone == NULL)
                return 0;
 
        msg_format = ast_strdupa(config);
        if (msg_format == NULL) {
                ast_log(LOG_WARNING, "Out of memory.\n");
-               free(newzone);
+               ast_free(newzone);
                return 0;
        }
 
        timezone = strsep(&msg_format, "|");
        if (!msg_format) {
                ast_log(LOG_WARNING, "Invalid timezone definition : %s\n", zonename);
-               free(newzone);
+               ast_free(newzone);
                return 0;
        }
                        
index 542d323..96782c5 100644 (file)
@@ -220,7 +220,7 @@ static void *mixmonitor_thread(void *obj)
        if (fs)
                ast_closestream(fs);
 
-       free(mixmonitor);
+       ast_free(mixmonitor);
 
 
        return NULL;
@@ -253,7 +253,7 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename
        }
 
        /* Pre-allocate mixmonitor structure and spy */
-       if (!(mixmonitor = calloc(1, len))) {
+       if (!(mixmonitor = ast_calloc(1, len))) {
                return;
        }
 
@@ -291,7 +291,7 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename
                        mixmonitor->spy.type, chan->name);
                /* Since we couldn't add ourselves - bail out! */
                ast_mutex_destroy(&mixmonitor->spy.lock);
-               free(mixmonitor);
+               ast_free(mixmonitor);
                return;
        }
 
index 59e4fb0..c7ff964 100644 (file)
@@ -328,7 +328,7 @@ static int osp_create_provider(
        error = OSPPUtilLoadPEMPrivateKey((unsigned char*)p->privatekey, &privatekey);
        if (error != OSPC_ERR_NO_ERROR) {
                ast_log(LOG_WARNING, "OSP: Unable to load privatekey '%s', error '%d'\n", p->privatekey, error);
-               free(p);
+               ast_free(p);
                return 0;
        }
 
@@ -336,9 +336,9 @@ static int osp_create_provider(
        if (error != OSPC_ERR_NO_ERROR) {
                ast_log(LOG_WARNING, "OSP: Unable to load localcert '%s', error '%d'\n", p->localcert, error);
                if (privatekey.PrivateKeyData) {
-                       free(privatekey.PrivateKeyData);
+                       ast_free(privatekey.PrivateKeyData);
                }
-               free(p);
+               ast_free(p);
                return 0;
        }
 
@@ -354,16 +354,16 @@ static int osp_create_provider(
                        ast_log(LOG_WARNING, "OSP: Unable to load cacert '%s', error '%d'\n", p->cacerts[i], error);
                        for (j = 0; j < i; j++) {
                                if (cacerts[j].CertData) {
-                                       free(cacerts[j].CertData);
+                                       ast_free(cacerts[j].CertData);
                                }
                        }
                        if (localcert.CertData) {
-                               free(localcert.CertData);
+                               ast_free(localcert.CertData);
                        }
                        if (privatekey.PrivateKeyData) {
-                               free(privatekey.PrivateKeyData);
+                               ast_free(privatekey.PrivateKeyData);
                        }
-                       free(p);
+                       ast_free(p);
                        return 0;
                }
                pcacerts[i] = &cacerts[i];
@@ -394,7 +394,7 @@ static int osp_create_provider(
                                &p->handle);
        if (error != OSPC_ERR_NO_ERROR) {
                ast_log(LOG_WARNING, "OSP: Unable to create provider '%s', error '%d'\n", provider, error);
-               free(p);
+               ast_free(p);
                res = -1;
        } else {
                if (option_debug)
@@ -408,14 +408,14 @@ static int osp_create_provider(
 
        for (i = 0; i < p->cacount; i++) {
                if (cacerts[i].CertData) {
-                       free(cacerts[i].CertData);
+                       ast_free(cacerts[i].CertData);
                }
        }
        if (localcert.CertData) {
-               free(localcert.CertData);
+               ast_free(localcert.CertData);
        }
        if (privatekey.PrivateKeyData) {
-               free(privatekey.PrivateKeyData);
+               ast_free(privatekey.PrivateKeyData);
        }
 
        return res;
@@ -2009,7 +2009,7 @@ static int osp_unload(void)
                while(p) {
                        next = p->next;
                        OSPPProviderDelete(p->handle, 0);
-                       free(p);
+                       ast_free(p);
                        p = next;
                }
                ospproviders = NULL;
index 7d06d2d..f0e6dae 100644 (file)
@@ -831,7 +831,7 @@ static int remove_from_interfaces(const char *interface)
                                if (option_debug)
                                        ast_log(LOG_DEBUG, "Removing %s from the list of interfaces that make up all of our queue members.\n", interface);
                                AST_LIST_REMOVE_CURRENT(&interfaces, list);
-                               free(curint);
+                               ast_free(curint);
                        }
                        break;
                }
@@ -848,7 +848,7 @@ static void clear_and_free_interfaces(void)
 
        AST_LIST_LOCK(&interfaces);
        while ((curint = AST_LIST_REMOVE_HEAD(&interfaces, list)))
-               free(curint);
+               ast_free(curint);
        AST_LIST_UNLOCK(&interfaces);
 }
 
@@ -1076,7 +1076,7 @@ static void free_members(struct call_queue *q, int all)
                        else
                                q->members = next;
                        remove_from_interfaces(curm->interface);
-                       free(curm);
+                       ast_free(curm);
                } else
                        prev = curm;
        }
@@ -1086,7 +1086,7 @@ static void destroy_queue(struct call_queue *q)
 {
        free_members(q, 1);
        ast_mutex_destroy(&q->lock);
-       free(q);
+       ast_free(q);
 }
 
 /*!\brief Reload a single queue via realtime.
@@ -1196,7 +1196,7 @@ static struct call_queue *find_queue_by_name_rt(const char *queuename, struct as
                                q->members = next_m;
                        }
                        remove_from_interfaces(m->interface);
-                       free(m);
+                       ast_free(m);
                } else {
                        prev_m = m;
                }
@@ -1546,7 +1546,7 @@ static void hangupcalls(struct callattempt *outgoing, struct ast_channel *except
                        ast_hangup(outgoing->chan);
                oo = outgoing;
                outgoing = outgoing->q_next;
-               free(oo);
+               ast_free(oo);
        }
 }
 
@@ -1747,13 +1747,13 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
        tmp->chan->data = "(Outgoing Line)";
        tmp->chan->whentohangup = 0;
        if (tmp->chan->cid.cid_num)
-               free(tmp->chan->cid.cid_num);
+               ast_free(tmp->chan->cid.cid_num);
        tmp->chan->cid.cid_num = ast_strdup(qe->chan->cid.cid_num);
        if (tmp->chan->cid.cid_name)
-               free(tmp->chan->cid.cid_name);
+               ast_free(tmp->chan->cid.cid_name);
        tmp->chan->cid.cid_name = ast_strdup(qe->chan->cid.cid_name);
        if (tmp->chan->cid.cid_ani)
-               free(tmp->chan->cid.cid_ani);
+               ast_free(tmp->chan->cid.cid_ani);
        tmp->chan->cid.cid_ani = ast_strdup(qe->chan->cid.cid_ani);
 
        /* Inherit specially named variables from parent channel */
@@ -2067,11 +2067,11 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
                                        } else {
                                                ast_channel_inherit_variables(in, o->chan);
                                                if (o->chan->cid.cid_num)
-                                                       free(o->chan->cid.cid_num);
+                                                       ast_free(o->chan->cid.cid_num);
                                                o->chan->cid.cid_num = ast_strdup(in->cid.cid_num);
 
                                                if (o->chan->cid.cid_name)
-                                                       free(o->chan->cid.cid_name);
+                                                       ast_free(o->chan->cid.cid_name);
                                                o->chan->cid.cid_name = ast_strdup(in->cid.cid_name);
 
                                                ast_string_field_set(o->chan, accountcode, in->accountcode);
@@ -2079,11 +2079,11 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
 
                                                if (in->cid.cid_ani) {
                                                        if (o->chan->cid.cid_ani)
-                                                               free(o->chan->cid.cid_ani);
+                                                               ast_free(o->chan->cid.cid_ani);
                                                        o->chan->cid.cid_ani = ast_strdup(in->cid.cid_ani);
                                                }
                                                if (o->chan->cid.cid_rdnis)
-                                                       free(o->chan->cid.cid_rdnis);
+                                                       ast_free(o->chan->cid.cid_rdnis);
                                                o->chan->cid.cid_rdnis = ast_strdup(S_OR(in->macroexten, in->exten));
                                                if (ast_call(o->chan, tmpchan, 0)) {
                                                        ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
@@ -2547,7 +2547,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                        if (outgoing->chan && (outgoing->chan->_state == AST_STATE_UP))
                                break;
                } else {
-                       free(tmp);
+                       ast_free(tmp);
                }
        }
        if (qe->expire && (!qe->parent->timeout || (qe->expire - now) <= qe->parent->timeout))
@@ -2964,7 +2964,7 @@ static int remove_from_queue(const char *queuename, const char *interface)
                                "Location: %s\r\n"
                                "MemberName: %s\r\n",
                                q->name, last_member->interface, last_member->membername);
-                       free(last_member);
+                       ast_free(last_member);
                        
                        if (queue_persistent_members)
                                dump_queue_members(q);
@@ -4087,7 +4087,7 @@ static int reload_queues(void)
                                                        } else {
                                                                q->members = newm;
                                                        }
-                                                       free(cur);
+                                                       ast_free(cur);
                                                } else {
                                                        /* Add them to the master int list if necessary */
                                                        add_to_interfaces(interface);
@@ -4116,7 +4116,7 @@ static int reload_queues(void)
                                                q->members = next;
 
                                        remove_from_interfaces(cur->interface);
-                                       free(cur);
+                                       ast_free(cur);
                                }
 
                                if (new) {
index 7e43a38..6222157 100644 (file)
@@ -94,7 +94,7 @@ static int readfile_exec(struct ast_channel *chan, void *data)
                                ast_log(LOG_WARNING, "%s is longer than %d, and %d \n", file, len, (int)strlen(returnvar));
                }
                pbx_builtin_setvar_helper(chan, varname, returnvar);
-               free(returnvar);
+               ast_free(returnvar);
        }
        ast_module_user_remove(u);
        return res;
index e59a7bb..cfded49 100644 (file)
@@ -1353,7 +1353,7 @@ static int rpt_do_lstats(int fd, int argc, char *argv[])
                                        l = l->next;
                                        continue;
                                }
-                               if ((s = (struct rpt_lstat *) ast_calloc(1, sizeof(struct rpt_lstat))) == NULL) {
+                               if ((s = ast_calloc(1, sizeof(*s))) == NULL) {
                                        ast_log(LOG_ERROR, "Malloc failed in rpt_do_lstats\n");
                                        rpt_mutex_unlock(&myrpt->lock); /* UNLOCK */
                                        return RESULT_FAILURE;
@@ -2186,7 +2186,7 @@ static void *rpt_tele_thread(void *this)
                                l = l->next;
                                continue;
                        }
-                       m = ast_malloc(sizeof(struct rpt_link));
+                       m = ast_malloc(sizeof(*m));
                        if (!m) {
                                ast_log(LOG_WARNING, "Cannot alloc memory on %s\n", mychannel->name);
                                remque((struct qelem *)mytele);
@@ -2453,7 +2453,7 @@ static void rpt_telemetry(struct rpt *myrpt, int mode, void *data)
        struct rpt_link *mylink = (struct rpt_link *) data;
        int res;
 
-       tele = ast_calloc(1, sizeof(struct rpt_tele));
+       tele = ast_calloc(1, sizeof(*tele));
        if (!tele) {
                ast_log(LOG_WARNING, "Unable to allocate memory\n");
                pthread_exit(NULL);
@@ -2869,7 +2869,7 @@ static int function_ilink(struct rpt *myrpt, char *param, char *digits, int comm
                        rpt_mutex_unlock(&myrpt->lock);
                ast_copy_string(myrpt->lastlinknode, digitbuf, MAXNODESTR);
                /* establish call in monitor mode */
-               l = ast_calloc(1, sizeof(struct rpt_link));
+               l = ast_calloc(1, sizeof(*l));
                if (!l) {
                        ast_log(LOG_WARNING, "Unable to malloc\n");
                        return DC_ERROR;
@@ -2979,7 +2979,7 @@ static int function_ilink(struct rpt *myrpt, char *param, char *digits, int comm
                        rpt_mutex_unlock(&myrpt->lock);
                ast_copy_string(myrpt->lastlinknode, digitbuf, MAXNODESTR);
                /* establish call in tranceive mode */
-               l = ast_calloc(1, sizeof(struct rpt_link));
+               l = ast_calloc(1, sizeof(*l));
                if (!l) {
                        ast_log(LOG_WARNING, "Unable to malloc\n");
                        return DC_ERROR;
@@ -6982,7 +6982,7 @@ static int rpt_exec(struct ast_channel *chan, void *data)
                } else 
                        rpt_mutex_unlock(&myrpt->lock);
                /* establish call in tranceive mode */
-               l = ast_calloc(1, sizeof(struct rpt_link));
+               l = ast_calloc(1, sizeof(*l));
                if (!l) {
                        ast_log(LOG_WARNING, "Unable to malloc\n");
                        pthread_exit(NULL);
index 100b174..0956e0b 100644 (file)
@@ -511,7 +511,7 @@ static int speech_processing_sound(struct ast_channel *chan, void *data)
         }
 
        if (speech->processing_sound != NULL) {
-               free(speech->processing_sound);
+               ast_free(speech->processing_sound);
                speech->processing_sound = NULL;
        }
 
index 7c1c2d9..750bc5a 100644 (file)
@@ -793,7 +793,7 @@ static struct ast_vm_user *find_user_realtime(struct ast_vm_user *ivm, const cha
                        ast_variables_destroy(var);
                } else { 
                        if (!ivm) 
-                               free(retval);
+                               ast_free(retval);
                        retval = NULL;
                }       
        } 
@@ -2287,12 +2287,12 @@ static void free_user(struct ast_vm_user *vmu)
        if (!ast_test_flag(vmu, VM_ALLOCED))
                return;
 
-       free(vmu);
+       ast_free(vmu);
 }
 
 static void free_zone(struct vm_zone *z)
 {
-       free(z);
+       ast_free(z);
 }
 
 static const char *mbox(int id)
@@ -8047,10 +8047,9 @@ static int load_config(void)
                                                                AST_LIST_UNLOCK(&zones);
                                                        } else {
                                                                ast_log(LOG_WARNING, "Invalid timezone definition at line %d\n", var->lineno);
-                                                               free(z);
+                                                               ast_free(z);
                                                        }
                                                } else {
-                                                       free(z);
                                                        AST_LIST_UNLOCK(&users);
                                                        ast_config_destroy(cfg);
                                                        return -1;
@@ -8066,19 +8065,19 @@ static int load_config(void)
                memset(emailtitle,0,sizeof(emailtitle));
                strcpy(charset, "ISO-8859-1");
                if (emailbody) {
-                       free(emailbody);
+                       ast_free(emailbody);
                        emailbody = NULL;
                }
                if (emailsubject) {
-                       free(emailsubject);
+                       ast_free(emailsubject);
                        emailsubject = NULL;
                }
                if (pagerbody) {
-                       free(pagerbody);
+                       ast_free(pagerbody);
                        pagerbody = NULL;
                }
                if (pagersubject) {
-                       free(pagersubject);
+                       ast_free(pagersubject);
                        pagersubject = NULL;
                }
                if ((s = ast_variable_retrieve(cfg, "general", "pbxskip")))
@@ -8938,7 +8937,7 @@ static struct ast_vm_user *find_user_realtime_imapuser(const char *imapuser)
                ast_variables_destroy(var);
                return vmu;
        } else {
-               free(vmu);
+               ast_free(vmu);
                return NULL;
        }
 }
@@ -9320,7 +9319,7 @@ static void vmstate_delete(struct vm_state *vms)
        AST_LIST_UNLOCK(&vmstates);
        
        if (vc)
-               free(vc);
+               ast_free(vc);
        else
                ast_log(LOG_ERROR, "No vmstate found for user:%s, mailbox %s\n", vms->imapuser, vms->username);
 }
index c7a2826..9814079 100644 (file)
@@ -211,7 +211,7 @@ static int load_config(void)
                if (AST_LIST_FIRST(&(tableptr->columns)))
                        AST_RWLIST_INSERT_TAIL(&odbc_tables, tableptr, list);
                else
-                       free(tableptr);
+                       ast_free(tableptr);
        }
        return res;
 }
index 6738aa6..1a8b521 100644 (file)
@@ -218,22 +218,22 @@ static int odbc_unload_module(void)
        if (dsn) {
                if (option_verbose > 10)
                        ast_verbose( VERBOSE_PREFIX_4 "cdr_odbc: free dsn\n");
-               free(dsn);
+               ast_free(dsn);
        }
        if (username) {
                if (option_verbose > 10)
                        ast_verbose( VERBOSE_PREFIX_4 "cdr_odbc: free username\n");
-               free(username);
+               ast_free(username);
        }
        if (password) {
                if (option_verbose > 10)
                        ast_verbose( VERBOSE_PREFIX_4 "cdr_odbc: free password\n");
-               free(password);
+               ast_free(password);
        }
        if (table) {
                if (option_verbose > 10)
                        ast_verbose( VERBOSE_PREFIX_4 "cdr_odbc: free table\n");
-               free(table);
+               ast_free(table);
        }
 
        ast_cdr_unregister(name);
index 34feca6..39639bd 100644 (file)
@@ -184,17 +184,17 @@ static int my_unload_module(void)
        if (conn)
                PQfinish(conn);
        if (pghostname)
-               free(pghostname);
+               ast_free(pghostname);
        if (pgdbname)
-               free(pgdbname);
+               ast_free(pgdbname);
        if (pgdbuser)
-               free(pgdbuser);
+               ast_free(pgdbuser);
        if (pgpassword)
-               free(pgpassword);
+               ast_free(pgpassword);
        if (pgdbport)
-               free(pgdbport);
+               ast_free(pgdbport);
        if (table)
-               free(table);
+               ast_free(table);
        ast_cdr_unregister(name);
        return 0;
 }
index bd232b4..b47dd35 100644 (file)
@@ -161,7 +161,7 @@ static int sqlite_log(struct ast_cdr *cdr)
        
        if (zErr) {
                ast_log(LOG_ERROR, "cdr_sqlite: %s\n", zErr);
-               free(zErr);
+               ast_free(zErr);
        }
 
        ast_mutex_unlock(&sqlite_lock);
@@ -190,7 +190,7 @@ static int load_module(void)
        db = sqlite_open(fn, AST_FILE_MODE, &zErr);
        if (!db) {
                ast_log(LOG_ERROR, "cdr_sqlite: %s\n", zErr);
-               free(zErr);
+               ast_free(zErr);
                return -1;
        }
 
@@ -200,7 +200,7 @@ static int load_module(void)
                res = sqlite_exec(db, sql_create_table, NULL, NULL, &zErr);
                if (res) {
                        ast_log(LOG_ERROR, "cdr_sqlite: Unable to create table 'cdr': %s\n", zErr);
-                       free(zErr);
+                       ast_free(zErr);
                        goto err;
                }
 
index b4d5172..736199a 100644 (file)
@@ -221,16 +221,16 @@ static int tds_log(struct ast_cdr *cdr)
                }
        } while (!connected && !retried);
 
-       free(accountcode);
-       free(src);
-       free(dst);
-       free(dcontext);
-       free(clid);
-       free(channel);
-       free(dstchannel);
-       free(lastapp);
-       free(lastdata);
-       free(uniqueid);
+       ast_free(accountcode);
+       ast_free(src);
+       ast_free(dst);
+       ast_free(dcontext);
+       ast_free(clid);
+       ast_free(channel);
+       ast_free(dstchannel);
+       ast_free(lastapp);
+       ast_free(lastdata);
+       ast_free(uniqueid);
 
        ast_mutex_unlock(&tds_lock);
 
@@ -246,7 +246,7 @@ static char *anti_injection(const char *str, int len)
        char *known_bad[] = {"select", "insert", "update", "delete", "drop", ";", "--", "\0"};
        int idx;
 
-       if ((buf = malloc(len + 1)) == NULL)
+       if ((buf = ast_malloc(len + 1)) == NULL)
        {
                ast_log(LOG_ERROR, "cdr_tds:  Out of memory error\n");
                return NULL;
@@ -413,13 +413,13 @@ static int tds_unload_module(void)
 
        ast_cdr_unregister(name);
 
-       if (hostname) free(hostname);
-       if (dbname) free(dbname);
-       if (dbuser) free(dbuser);
-       if (password) free(password);
-       if (charset) free(charset);
-       if (language) free(language);
-       if (table) free(table);
+       if (hostname) ast_free(hostname);
+       if (dbname) ast_free(dbname);
+       if (dbuser) ast_free(dbuser);
+       if (password) ast_free(password);
+       if (charset) ast_free(charset);
+       if (language) ast_free(language);
+       if (table) ast_free(table);
 
        return 0;
 }
index 603b454..739c35d 100644 (file)
@@ -378,7 +378,7 @@ static int agent_cleanup(struct agent_pvt *p)
        if (p->dead) {
                ast_mutex_destroy(&p->lock);
                ast_mutex_destroy(&p->app_lock);
-               free(p);
+               ast_free(p);
         }
        return 0;
 }
@@ -810,7 +810,7 @@ static int agent_hangup(struct ast_channel *ast)
        } else if (p->dead) {
                ast_mutex_destroy(&p->lock);
                ast_mutex_destroy(&p->app_lock);
-               free(p);
+               ast_free(p);
        } else {
                if (p->chan) {
                        /* Not dead -- check availability now */
@@ -1136,7 +1136,7 @@ static int read_agent_config(void)
                                if (!p->chan) {
                                        ast_mutex_destroy(&p->lock);
                                        ast_mutex_destroy(&p->app_lock);
-                                       free(p);
+                                       ast_free(p);
                                } else {
                                        /* Cause them to hang up */
                                        ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);
@@ -2118,7 +2118,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
                                                if (p->dead && !p->owner) {
                                                        ast_mutex_destroy(&p->lock);
                                                        ast_mutex_destroy(&p->app_lock);
-                                                       free(p);
+                                                       ast_free(p);
                                                }
                                        }
                                        else {
@@ -2531,7 +2531,7 @@ static int unload_module(void)
        while ((p = AST_LIST_REMOVE_HEAD(&agents, list))) {
                if (p->owner)
                        ast_softhangup(p->owner, AST_SOFTHANGUP_APPUNLOAD);
-               free(p);
+               ast_free(p);
        }
        AST_LIST_UNLOCK(&agents);
        AST_LIST_HEAD_DESTROY(&agents);
index d27e031..1402a5a 100644 (file)
@@ -257,7 +257,7 @@ static struct gtalk_container gtalk_list;
 
 static void gtalk_member_destroy(struct gtalk *obj)
 {
-       free(obj);
+       ast_free(obj);
 }
 
 static struct gtalk *find_gtalk(char *name, char *connection)
@@ -817,9 +817,9 @@ static int gtalk_create_candidates(struct gtalk *client, struct gtalk_pvt *p, ch
 
 safeout:
        if (ours1)
-               free(ours1);
+               ast_free(ours1);
        if (ours2)
-               free(ours2);
+               ast_free(ours2);
        if (iq)
                iks_delete(iq);
        if (gtalk)
@@ -1036,7 +1036,7 @@ static void gtalk_free_candidates(struct gtalk_candidate *candidate)
        while (candidate) {
                last = candidate;
                candidate = candidate->next;
-               free(last);
+               ast_free(last);
        }
 }
 
@@ -1064,7 +1064,7 @@ static void gtalk_free_pvt(struct gtalk *client, struct gtalk_pvt *p)
        if (p->vrtp)
                ast_rtp_destroy(p->vrtp);
        gtalk_free_candidates(p->theircandidates);
-       free(p);
+       ast_free(p);
 }
 
 
index ebad18f..94ebdcf 100644 (file)
@@ -968,7 +968,7 @@ static struct iax2_thread *find_idle_thread(void)
        if (ast_pthread_create_detached_background(&thread->threadid, NULL, iax2_process_thread, thread)) {
                ast_cond_destroy(&thread->cond);
                ast_mutex_destroy(&thread->lock);
-               free(thread);
+               ast_free(thread);
                thread = NULL;
        }
 
@@ -1160,7 +1160,7 @@ static struct chan_iax2_pvt *new_iax(struct sockaddr_in *sin, int lockpeer, cons
                return NULL;
 
        if (ast_string_field_init(tmp, 32)) {
-               free(tmp);
+               ast_free(tmp);
                tmp = NULL;
                return NULL;
        }
@@ -1444,7 +1444,7 @@ static void destroy_firmware(struct iax_firmware *cur)
                munmap(cur->fwh, ntohl(cur->fwh->datalen) + sizeof(*(cur->fwh)));
        }
        close(cur->fd);
-       free(cur);
+       ast_free(cur);
 }
 
 static int try_firmware(char *s)
@@ -1910,7 +1910,7 @@ retry:
                        jb_destroy(pvt->jb);
                        /* gotta free up the stringfields */
                        ast_string_field_free_pools(pvt);
-                       free(pvt);
+                       ast_free(pvt);
                }
        }
        if (owner) {
@@ -3187,7 +3187,7 @@ static int iax2_setoption(struct ast_channel *c, int option, void *data, int dat
                res = send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_CONTROL,
                                          AST_CONTROL_OPTION, 0, (unsigned char *) h,
                                          datalen + sizeof(*h), -1);
-               free(h);
+               ast_free(h);
                return res;
        }
 }
@@ -5638,7 +5638,7 @@ static int iax2_append_register(const char *hostname, const char *username,
                return -1;
 
        if (ast_dnsmgr_lookup(hostname, &reg->addr.sin_addr, &reg->dnsmgr) < 0) {
-               free(reg);
+               ast_free(reg);
                return -1;
        }
 
@@ -6247,10 +6247,10 @@ static int timing_read(int *id, int fd, short events, void *cbdata)
                   because by the time they could get tpeerlock, we've already grabbed it */
                if (option_debug)
                        ast_log(LOG_DEBUG, "Dropping unused iax2 trunk peer '%s:%d'\n", ast_inet_ntoa(drop->addr.sin_addr), ntohs(drop->addr.sin_port));
-               free(drop->trunkdata);
+               ast_free(drop->trunkdata);
                ast_mutex_unlock(&drop->lock);
                ast_mutex_destroy(&drop->lock);
-               free(drop);
+               ast_free(drop);
                
        }
 
@@ -6306,8 +6306,8 @@ static void *dp_lookup_thread(void *data)
        struct dpreq_data *dpr = data;
        dp_lookup(dpr->callno, dpr->context, dpr->callednum, dpr->callerid, 0);
        if (dpr->callerid)
-               free(dpr->callerid);
-       free(dpr);
+               ast_free(dpr->callerid);
+       ast_free(dpr);
        return NULL;
 }
 
@@ -6344,7 +6344,7 @@ static void *iax_park_thread(void *stuff)
        d = stuff;
        chan1 = d->chan1;
        chan2 = d->chan2;
-       free(d);
+       ast_free(d);
        f = ast_read(chan1);
        if (f)
                ast_frfree(f);
@@ -6399,7 +6399,7 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2)
                if (!ast_pthread_create_detached_background(&th, NULL, iax_park_thread, d)) {
                        return 0;
                }
-               free(d);
+               ast_free(d);
        }
        return -1;
 }
@@ -7299,7 +7299,7 @@ retryowner:
                                                                        char tmp[256];
                                                                        for (var = ies.vars; var; var = var->next) {
                                                                                if (prev)
-                                                                                       free(prev);
+                                                                                       ast_free(prev);
                                                                                prev = var;
                                                                                snprintf(tmp, sizeof(tmp), "__~IAX2~%s", var->name);
                                                                                pbx_builtin_setvar_helper(c, tmp, var->value);
@@ -8016,7 +8016,7 @@ static void iax2_process_thread_cleanup(void *data)
        struct iax2_thread *thread = data;
        ast_mutex_destroy(&thread->lock);
        ast_cond_destroy(&thread->cond);
-       free(thread);
+       ast_free(thread);
        ast_atomic_dec_and_test(&iaxactivethreadcount);
 }
 
@@ -8359,7 +8359,7 @@ static void free_context(struct iax2_context *con)
        while(con) {
                conl = con;
                con = con->next;
-               free(conl);
+               ast_free(conl);
        }
 }
 
@@ -8539,10 +8539,11 @@ static void *network_thread(void *ignore)
 
 static int start_network_thread(void)
 {
+       struct iax2_thread *thread;
        int threadcount = 0;
        int x;
        for (x = 0; x < iaxthreadcount; x++) {
-               struct iax2_thread *thread = ast_calloc(1, sizeof(struct iax2_thread));
+               thread = ast_calloc(1, sizeof(*thread));
                if (thread) {
                        thread->type = IAX_THREAD_TYPE_POOL;
                        thread->threadnum = ++threadcount;
@@ -8550,7 +8551,7 @@ static int start_network_thread(void)
                        ast_cond_init(&thread->cond, NULL);
                        if (ast_pthread_create_detached(&thread->threadid, NULL, iax2_process_thread, thread)) {
                                ast_log(LOG_WARNING, "Failed to create new thread!\n");
-                               free(thread);
+                               ast_free(thread);
                                thread = NULL;
                        }
                        AST_LIST_LOCK(&idle_list);
@@ -8726,7 +8727,7 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
                        peer->pokeexpire = -1;
                        peer->sockfd = defaultsockfd;
                        if (ast_string_field_init(peer, 32)) {
-                               free(peer);
+                               ast_free(peer);
                                peer = NULL;
                        }
                }
@@ -8812,7 +8813,7 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
                                        ast_clear_flag(peer, IAX_DYNAMIC);
                                        if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) {
                                                ast_string_field_free_pools(peer);
-                                               free(peer);
+                                               ast_free(peer);
                                                return NULL;
                                        }
                                        if (!peer->addr.sin_port)
@@ -8823,7 +8824,7 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
                        } else if (!strcasecmp(v->name, "defaultip")) {
                                if (ast_get_ip(&peer->defaddr, v->value)) {
                                        ast_string_field_free_pools(peer);
-                                       free(peer);
+                                       ast_free(peer);
                                        return NULL;
                                }
                        } else if (!strcasecmp(v->name, "sourceaddress")) {
@@ -8977,7 +8978,7 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, st
        } else {
                AST_LIST_UNLOCK(&users);
                /* This is going to memset'd to 0 in the next block */
-               user = ast_calloc(sizeof(*user),1);
+               user = ast_calloc(1, sizeof(*user));
        }
        
        if (user) {
@@ -8985,7 +8986,7 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, st
                        ast_string_field_free_pools(user);
                        memset(user, 0, sizeof(struct iax2_user));
                        if (ast_string_field_init(user, 32)) {
-                               free(user);
+                               ast_free(user);
                                user = NULL;
                        }
                        user->maxauthreq = maxauthreq;
@@ -9178,7 +9179,7 @@ static void delete_users(void)
                }
                if (reg->dnsmgr)
                        ast_dnsmgr_release(reg->dnsmgr);
-               free(reg);
+               ast_free(reg);
        }
        AST_LIST_UNLOCK(&registrations);
 
@@ -9197,7 +9198,7 @@ static void destroy_user(struct iax2_user *user)
                user->vars = NULL;
        }
        ast_string_field_free_pools(user);
-       free(user);
+       ast_free(user);
 }
 
 static void prune_users(void)
@@ -9241,7 +9242,7 @@ static void destroy_peer(struct iax2_peer *peer)
 
        ast_string_field_free_pools(peer);
 
-       free(peer);
+       ast_free(peer);
 }
 
 static void prune_peers(void){
@@ -9794,7 +9795,7 @@ static struct iax2_dpcache *find_cache(struct ast_channel *chan, const char *dat
                        if ((dp->flags & CACHE_FLAG_PENDING) || dp->callno)
                                ast_log(LOG_WARNING, "DP still has peer field or pending or callno (flags = %d, peer = blah, callno = %d)\n", dp->flags, dp->callno);
                        else
-                               free(dp);
+                               ast_free(dp);
                        continue;
                }
                if (!strcmp(dp->peercontext, data) && !strcmp(dp->exten, exten))
index 8d588d7..1fd7f2f 100644 (file)
@@ -178,7 +178,7 @@ retrylock:
                return and destroy p.  */
                ast_mutex_unlock(&p->lock);
                ast_mutex_destroy(&p->lock);
-               free(p);
+               ast_free(p);
                return -1;
        }
        if (!other) {
@@ -530,7 +530,7 @@ static int local_hangup(struct ast_channel *ast)
                /* And destroy */
                if (!glaredetect) {
                        ast_mutex_destroy(&p->lock);
-                       free(p);
+                       ast_free(p);
                }
                return 0;
        }
@@ -577,7 +577,7 @@ static struct local_pvt *local_alloc(const char *data, int format)
        if (!ast_exists_extension(NULL, tmp->context, tmp->exten, 1, NULL)) {
                ast_log(LOG_NOTICE, "No such extension/context %s@%s creating local channel\n", tmp->exten, tmp->context);
                ast_mutex_destroy(&tmp->lock);
-               free(tmp);
+               ast_free(tmp);
                tmp = NULL;
        } else {
                /* Add to list */
index 2efc0af..20b7447 100644 (file)
@@ -697,15 +697,18 @@ static int retrans_pkt(void *data)
 static int mgcp_postrequest(struct mgcp_endpoint *p, struct mgcp_subchannel *sub, 
                             char *data, int len, unsigned int seqno)
 {
-       struct mgcp_message *msg = ast_malloc(sizeof(*msg) + len);
+       struct mgcp_message *msg;
        struct mgcp_message *cur;
-       struct mgcp_gateway *gw = ((p && p->parent) ? p->parent : NULL);
+       struct mgcp_gateway *gw;
        struct timeval tv;
 
+       msg = ast_malloc(sizeof(*msg) + len);
        if (!msg) {
                return -1;
        }
+       gw = ((p && p->parent) ? p->parent : NULL);
        if (!gw) {
+               ast_free(msg);
                return -1;
        }
 /* SC
index c1ef37c..42966ec 100644 (file)
@@ -79,9 +79,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "chan_misdn_config.h"
 #include "isdn_lib.h"
 
-char global_tracefile[BUFFERSIZE+1];
+char global_tracefile[BUFFERSIZE + 1];
 
-static int g_config_initialized=0;
+static int g_config_initialized = 0;
 
 struct misdn_jb{
        int size;
@@ -149,7 +149,7 @@ struct hold_info {
 
 struct chan_list {
   
-       char allowed_bearers[BUFFERSIZE+1];
+       char allowed_bearers[BUFFERSIZE + 1];
        
        enum misdn_chan_state state;
        int need_queue_hangup;
@@ -244,11 +244,13 @@ static struct ast_frame *process_ast_dsp(struct chan_list *tmp, struct ast_frame
 
 static inline void free_robin_list_r (struct robin_list *r)
 {
-        if (r) {
-                if (r->next) free_robin_list_r(r->next);
-                if (r->group) free(r->group);
-                free(r);
-        }
+       if (r) {
+               if (r->next)
+                       free_robin_list_r(r->next);
+               if (r->group)
+                       ast_free(r->group);
+               ast_free(r);
+       }
 }
 
 static void free_robin_list ( void )
@@ -259,12 +261,13 @@ static void free_robin_list ( void )
 
 static struct robin_list* get_robin_position (char *group) 
 {
+       struct robin_list *new;
        struct robin_list *iter = robin;
        for (; iter; iter = iter->next) {
                if (!strcasecmp(iter->group, group))
                        return iter;
        }
-       struct robin_list *new = (struct robin_list *)calloc(1, sizeof(struct robin_list));
+       new = ast_calloc(1, sizeof(*new));
        new->group = strndup(group, strlen(group));
        new->channel = 1;
        if (robin) {
@@ -730,64 +733,70 @@ static void send_digit_to_chan(struct chan_list *cl, char digit )
 /*** CLI HANDLING ***/
 static int misdn_set_debug(int fd, int argc, char *argv[])
 {
+       int level;
+
        if (argc != 4 && argc != 5 && argc != 6 && argc != 7)
                return RESULT_SHOWUSAGE; 
 
-       int level = atoi(argv[3]);
+       level = atoi(argv[3]);
 
        switch (argc) {
-               case 4: 
-               case 5: {
-                                       int only = 0;
-                                       if (argc == 5) {
-                                               if (strncasecmp(argv[4], "only", strlen(argv[4])))
-                                                       return RESULT_SHOWUSAGE;
-                                               else
-                                                       only = 1;
-                                       }
-                                       int i;
-                                       for (i=0; i<=max_ports; i++) {
-                                               misdn_debug[i] = level;
-                                               misdn_debug_only[i] = only;
-                                       }
-                                       ast_cli(fd, "changing debug level for all ports to %d%s\n",misdn_debug[0], only?" (only)":"");
-                               }
-                               break;
-               case 6: 
-               case 7: {
-                                       if (strncasecmp(argv[4], "port", strlen(argv[4])))
-                                               return RESULT_SHOWUSAGE;
-                                       int port = atoi(argv[5]);
-                                       if (port <= 0 || port > max_ports) {
-                                               switch (max_ports) {
-                                                       case 0:
-                                                               ast_cli(fd, "port number not valid! no ports available so you won't get lucky with any number here...\n");
-                                                               break;
-                                                       case 1:
-                                                               ast_cli(fd, "port number not valid! only port 1 is availble.\n");
-                                                               break;
-                                                       default:
-                                                               ast_cli(fd, "port number not valid! only ports 1 to %d are available.\n", max_ports);
-                                                       }
-                                                       return 0;
-                                       }
-                                       if (argc == 7) {
-                                               if (strncasecmp(argv[6], "only", strlen(argv[6])))
-                                                       return RESULT_SHOWUSAGE;
-                                               else
-                                                       misdn_debug_only[port] = 1;
-                                       } else
-                                               misdn_debug_only[port] = 0;
-                                       misdn_debug[port] = level;
-                                       ast_cli(fd, "changing debug level to %d%s for port %d\n", misdn_debug[port], misdn_debug_only[port]?" (only)":"", port);
+       case 4: 
+       case 5:
+               {
+                       int only = 0, i;
+                       if (argc == 5) {
+                               if (strncasecmp(argv[4], "only", strlen(argv[4])))
+                                       return RESULT_SHOWUSAGE;
+                               else
+                                       only = 1;
+                       }
+       
+                       for (i = 0; i <= max_ports; i++) {
+                               misdn_debug[i] = level;
+                               misdn_debug_only[i] = only;
+                       }
+                       ast_cli(fd, "changing debug level for all ports to %d%s\n",misdn_debug[0], only?" (only)":"");
+               }
+               break;
+       case 6: 
+       case 7:
+               {
+                       int port;
+                       if (strncasecmp(argv[4], "port", strlen(argv[4])))
+                               return RESULT_SHOWUSAGE;
+                       port = atoi(argv[5]);
+                       if (port <= 0 || port > max_ports) {
+                               switch (max_ports) {
+                               case 0:
+                                       ast_cli(fd, "port number not valid! no ports available so you won't get lucky with any number here...\n");
+                                       break;
+                               case 1:
+                                       ast_cli(fd, "port number not valid! only port 1 is availble.\n");
+                                       break;
+                               default:
+                                       ast_cli(fd, "port number not valid! only ports 1 to %d are available.\n", max_ports);
                                }
+                               return 0;
+                       }
+                       if (argc == 7) {
+                               if (strncasecmp(argv[6], "only", strlen(argv[6])))
+                                       return RESULT_SHOWUSAGE;
+                               else
+                                       misdn_debug_only[port] = 1;
+                       } else
+                               misdn_debug_only[port] = 0;
+                       misdn_debug[port] = level;
+                       ast_cli(fd, "changing debug level to %d%s for port %d\n", misdn_debug[port], misdn_debug_only[port]?" (only)":"", port);
+               }
        }
        return 0;
 }
 
 static int misdn_set_crypt_debug(int fd, int argc, char *argv[])
 {
-       if (argc != 5) return RESULT_SHOWUSAGE; 
+       if (argc != 5)
+               return RESULT_SHOWUSAGE; 
 
        return 0;
 }
@@ -912,7 +921,7 @@ static int misdn_show_config (int fd, int argc, char *argv[])
        if (argc >= 4) {
                if (!strcmp(argv[3], "description")) {
                        if (argc == 5) {
-                               enum misdn_cfg_elements elem = misdn_cfg_get_elem (argv[4]);
+                               enum misdn_cfg_elements elem = misdn_cfg_get_elem(argv[4]);
                                if (elem == MISDN_CFG_FIRST)
                                        ast_cli(fd, "Unknown element: %s\n", argv[4]);
                                else
@@ -947,7 +956,7 @@ static int misdn_show_config (int fd, int argc, char *argv[])
        if (argc == 3 || onlyport == 0) {
                ast_cli(fd,"Misdn General-Config: \n"); 
                for (elem = MISDN_GEN_FIRST + 1, linebreak = 1; elem < MISDN_GEN_LAST; elem++, linebreak++) {
-                       misdn_cfg_get_config_string( 0, elem, buffer, BUFFERSIZE);
+                       misdn_cfg_get_config_string(0, elem, buffer, sizeof(buffer));
                        ast_cli(fd, "%-36s%s", buffer, !(linebreak % 2) ? "\n" : "");
                }
                ast_cli(fd, "\n");
@@ -958,7 +967,7 @@ static int misdn_show_config (int fd, int argc, char *argv[])
                for (; port > 0; port = misdn_cfg_get_next_port(port)) {
                        ast_cli(fd, "\n[PORT %d]\n", port);
                        for (elem = MISDN_CFG_FIRST + 1, linebreak = 1; elem < MISDN_CFG_LAST; elem++, linebreak++) {
-                               misdn_cfg_get_config_string( port, elem, buffer, BUFFERSIZE);
+                               misdn_cfg_get_config_string(port, elem, buffer, sizeof(buffer));
                                ast_cli(fd, "%-36s%s", buffer, !(linebreak % 2) ? "\n" : "");
                        }       
                        ast_cli(fd, "\n");
@@ -969,7 +978,7 @@ static int misdn_show_config (int fd, int argc, char *argv[])
                if (misdn_cfg_is_port_valid(onlyport)) {
                        ast_cli(fd, "[PORT %d]\n", onlyport);
                        for (elem = MISDN_CFG_FIRST + 1, linebreak = 1; elem < MISDN_CFG_LAST; elem++, linebreak++) {
-                               misdn_cfg_get_config_string(onlyport, elem, buffer, BUFFERSIZE);
+                               misdn_cfg_get_config_string(onlyport, elem, buffer, sizeof(buffer));
                                ast_cli(fd, "%-36s%s", buffer, !(linebreak % 2) ? "\n" : "");
                        }       
                        ast_cli(fd, "\n");
@@ -982,8 +991,8 @@ static int misdn_show_config (int fd, int argc, char *argv[])
 
 struct state_struct {
        enum misdn_chan_state state;
-       char txt[255] ;
-} ;
+       char txt[255];
+};
 
 static struct state_struct state_array[] = {
        {MISDN_NOTHING,"NOTHING"}, /* at beginning */
@@ -1010,18 +1019,19 @@ static struct state_struct state_array[] = {
        /* misdn_hangup */
 };
 
-static char *misdn_get_ch_state(struct chan_list *p) 
+static const char *misdn_get_ch_state(struct chan_list *p) 
 {
        int i;
        static char state[8];
        
        if( !p) return NULL;
   
-       for (i=0; i< sizeof(state_array)/sizeof(struct state_struct); i++) {
-               if ( state_array[i].state == p->state) return state_array[i].txt; 
+       for (i = 0; i < sizeof(state_array) / sizeof(struct state_struct); i++) {
+               if (state_array[i].state == p->state)
+                       return state_array[i].txt; 
        }
 
-       sprintf(state,"%d",p->state) ;
+       snprintf(state, sizeof(state), "%d", p->state) ;
 
        return state;
 }
@@ -1040,8 +1050,8 @@ static void reload_config(void)
        free_robin_list();
        misdn_cfg_reload();
        misdn_cfg_update_ptp();
-       misdn_cfg_get( 0, MISDN_GEN_TRACEFILE, global_tracefile, BUFFERSIZE);
-       misdn_cfg_get( 0, MISDN_GEN_DEBUG, &cfg_debug, sizeof(int));
+       misdn_cfg_get(0, MISDN_GEN_TRACEFILE, global_tracefile, sizeof(global_tracefile));
+       misdn_cfg_get(0, MISDN_GEN_DEBUG, &cfg_debug, sizeof(cfg_debug));
 
        for (i = 0;  i <= max_ports; i++) {
                misdn_debug[i] = cfg_debug;
@@ -1056,19 +1066,19 @@ static int misdn_reload (int fd, int argc, char *argv[])
        return 0;
 }
 
-static void print_bc_info (int fd, struct chan_list* help, struct misdn_bchannel* bc)
+static void print_bc_info (int fd, struct chan_list *help, struct misdn_bchannel *bc)
 {
-       struct ast_channel *ast=help->ast;
+       struct ast_channel *ast = help->ast;
        ast_cli(fd,
                "* Pid:%d Prt:%d Ch:%d Mode:%s Org:%s dad:%s oad:%s rad:%s ctx:%s state:%s\n",
 
                bc->pid, bc->port, bc->channel,
-               bc->nt?"NT":"TE",
-               help->originator == ORG_AST?"*":"I",
-               ast?ast->exten:NULL,
-               ast?ast->cid.cid_num:NULL,
+               bc->nt ? "NT" : "TE",
+               help->originator == ORG_AST ? "*" : "I",
+               ast ? ast->exten : NULL,
+               ast ? ast->cid.cid_num : NULL,
                bc->rad,
-               ast?ast->context:NULL,
+               ast ? ast->context : NULL,
                misdn_get_ch_state(help)
                );
        if (misdn_debug[bc->port] > 0)
@@ -1093,7 +1103,7 @@ static void print_bc_info (int fd, struct chan_list* help, struct misdn_bchannel
                        help->l3id,
                        help->addr,
                        bc->addr,
-                       bc?bc->l3_id:-1,
+                       bc ? bc->l3_id : -1,
                        bc->display,
                        
                        bc->active,
@@ -1105,22 +1115,23 @@ static void print_bc_info (int fd, struct chan_list* help, struct misdn_bchannel
                        bc->ec_enable,
 #endif
 
-                       help->norxtone,help->notxtone,
+                       help->norxtone, help->notxtone,
                        bc->holded
                        );
-  
+
 }
 
-static int misdn_show_cls (int fd, int argc, char *argv[])
+static int misdn_show_cls(int fd, int argc, char *argv[])
 {
-       struct chan_list *help=cl_te;
+       struct chan_list *help = cl_te;
   
-       ast_cli(fd,"Chan List: %p\n",cl_te); 
+       ast_cli(fd, "Chan List: %p\n", cl_te); 
   
-       for (;help; help=help->next) {
-               struct misdn_bchannel *bc=help->bc;   
-               struct ast_channel *ast=help->ast;
-               if (misdn_debug[0] > 2) ast_cli(fd, "Bc:%p Ast:%p\n", bc, ast);
+       for (; help; help = help->next) {
+               struct misdn_bchannel *bc = help->bc;   
+               struct ast_channel *ast = help->ast;
+               if (misdn_debug[0] > 2)
+                       ast_cli(fd, "Bc:%p Ast:%p\n", bc, ast);
                if (bc) {
                        print_bc_info(fd, help, bc);
                } else {
@@ -1129,21 +1140,21 @@ static int misdn_show_cls (int fd, int argc, char *argv[])
                                ast_cli(fd, " --> l3_id: %x\n"
                                                " --> dad:%s oad:%s\n"
                                                " --> hold_port: %d\n"
-                                               " --> hold_channel: %d\n"
+                                               " --> hold_channel: %d\n",
                                
-                                               ,help->l3id
-                                               ,ast->exten
-                                               ,ast->cid.cid_num
-                                               ,help->hold_info.port
-                                               ,help->hold_info.channel
+                                               help->l3id,
+                                               ast->exten,
+                                               ast->cid.cid_num,
+                                               help->hold_info.port,
+                                               help->hold_info.channel
                                                );
                        } else {
-                               ast_cli(fd,"* Channel in unknown STATE !!! Exten:%s, Callerid:%s\n", ast->exten, ast->cid.cid_num);
+                               ast_cli(fd, "* Channel in unknown STATE !!! Exten:%s, Callerid:%s\n", ast->exten, ast->cid.cid_num);
                        }
                }
        }
-  
-  
+
+
        return 0;
 }
 
@@ -1154,12 +1165,12 @@ static int misdn_show_cl (int fd, int argc, char *argv[])
        if (argc != 4)
                return RESULT_SHOWUSAGE;
   
-       for (;help; help=help->next) {
-               struct misdn_bchannel *bc=help->bc;   
-               struct ast_channel *ast=help->ast;
+       for (; help; help = help->next) {
+               struct misdn_bchannel *bc = help->bc;   
+               struct ast_channel *ast = help->ast;
     
                if (bc && ast) {
-                       if (!strcasecmp(ast->name,argv[3])) {
+                       if (!strcasecmp(ast->name, argv[3])) {
                                print_bc_info(fd, help, bc);
                                break; 
                        }
@@ -1171,55 +1182,55 @@ static int misdn_show_cl (int fd, int argc, char *argv[])
 }
 
 ast_mutex_t lock;
-int MAXTICS=8;
+int MAXTICS = 8;
 
 static int misdn_set_tics (int fd, int argc, char *argv[])
 {
        if (argc != 4)
                return RESULT_SHOWUSAGE;
   
-       MAXTICS=atoi(argv[3]);
+       MAXTICS = atoi(argv[3]);
   
        return 0;
 }
 
-static int misdn_show_stacks (int fd, int argc, char *argv[])
+static int misdn_show_stacks(int fd, int argc, char *argv[])
 {
        int port;
 
        ast_cli(fd, "BEGIN STACK_LIST:\n");
 
-       for (port=misdn_cfg_get_next_port(0); port > 0;
-            port=misdn_cfg_get_next_port(port)) {
+       for (port = misdn_cfg_get_next_port(0); port > 0;
+            port = misdn_cfg_get_next_port(port)) {
                char buf[128];
-               get_show_stack_details(port,buf);
-               ast_cli(fd,"  %s  Debug:%d%s\n", buf, misdn_debug[port], misdn_debug_only[port]?"(only)":"");
+               get_show_stack_details(port, buf);
+               ast_cli(fd,"  %s  Debug:%d%s\n", buf, misdn_debug[port], misdn_debug_only[port] ? "(only)" : "");
        }
-               
+
        return 0;
 }
 
 
-static int misdn_show_ports_stats (int fd, int argc, char *argv[])
+static int misdn_show_ports_stats(int fd, int argc, char *argv[])
 {
        int port;
 
        ast_cli(fd, "Port\tin_calls\tout_calls\n");
        
-       for (port=misdn_cfg_get_next_port(0); port > 0;
-            port=misdn_cfg_get_next_port(port)) {
-               ast_cli(fd,"%d\t%d\t\t%d\n",port,misdn_in_calls[port],misdn_out_calls[port]);
+       for (port = misdn_cfg_get_next_port(0); port > 0;
+            port = misdn_cfg_get_next_port(port)) {
+               ast_cli(fd, "%d\t%d\t\t%d\n", port, misdn_in_calls[port], misdn_out_calls[port]);
        }
-       ast_cli(fd,"\n");
-       
-       return 0;
+       ast_cli(fd, "\n");
 
+       return 0;
 }
 
 
-static int misdn_show_port (int fd, int argc, char *argv[])
+static int misdn_show_port(int fd, int argc, char *argv[])
 {
        int port;
+       char buf[128];
        
        if (argc != 4)
                return RESULT_SHOWUSAGE;
@@ -1228,18 +1239,18 @@ static int misdn_show_port (int fd, int argc, char *argv[])
   
        ast_cli(fd, "BEGIN STACK_LIST:\n");
 
-       char buf[128];
-       get_show_stack_details(port,buf);
-       ast_cli(fd,"  %s  Debug:%d%s\n",buf, misdn_debug[port], misdn_debug_only[port]?"(only)":"");
+       get_show_stack_details(port, buf);
+       ast_cli(fd, "  %s  Debug:%d%s\n", buf, misdn_debug[port], misdn_debug_only[port] ? "(only)" : "");
 
        
        return 0;
 }
 
-static int misdn_send_cd (int fd, int argc, char *argv[])
+static int misdn_send_cd(int fd, int argc, char *argv[])
 {
        char *channame; 
-       char *nr; 
+       char *nr;
+       struct chan_list *tmp;
   
        if (argc != 5)
                return RESULT_SHOWUSAGE;
@@ -1247,71 +1258,66 @@ static int misdn_send_cd (int fd, int argc, char *argv[])
        channame = argv[3];
        nr = argv[4];
 
-       ast_cli(fd, "Sending Calldeflection (%s) to %s\n",nr, channame);
+       ast_cli(fd, "Sending Calldeflection (%s) to %s\n", nr, channame);
        
-       {
-               struct chan_list *tmp=get_chan_by_ast_name(channame);
-               
-               if (!tmp) {
-                       ast_cli(fd, "Sending CD with nr %s to %s failed: Channel does not exist.\n",nr, channame);
-                       return 0; 
-               } else {
-                       if (strlen(nr) >= 15) {
-                               ast_cli(fd, "Sending CD with nr %s to %s failed: Number too long (up to 15 digits are allowed).\n",nr, channame);
-                               return 0; 
-                       }
-                       tmp->bc->fac_out.Function = Fac_CD;
-                       strncpy((char *)tmp->bc->fac_out.u.CDeflection.DeflectedToNumber, nr, sizeof(tmp->bc->fac_out.u.CDeflection.DeflectedToNumber));
-                       misdn_lib_send_event(tmp->bc, EVENT_FACILITY);
-               }
+       tmp = get_chan_by_ast_name(channame);
+       if (!tmp) {
+               ast_cli(fd, "Sending CD with nr %s to %s failed: Channel does not exist.\n",nr, channame);
+               return 0; 
        }
-  
+
+       if (strlen(nr) >= 15) {
+               ast_cli(fd, "Sending CD with nr %s to %s failed: Number too long (up to 15 digits are allowed).\n",nr, channame);
+               return 0; 
+       }
+       tmp->bc->fac_out.Function = Fac_CD;
+       ast_copy_string((char *)tmp->bc->fac_out.u.CDeflection.DeflectedToNumber, nr, sizeof(tmp->bc->fac_out.u.CDeflection.DeflectedToNumber));
+       misdn_lib_send_event(tmp->bc, EVENT_FACILITY);
+
        return 0; 
 }
 
-static int misdn_send_digit (int fd, int argc, char *argv[])
+static int misdn_send_digit(int fd, int argc, char *argv[])
 {
        char *channame; 
        char *msg; 
-  
+       struct chan_list *tmp;
+       int i, msglen;
+
        if (argc != 5)
                return RESULT_SHOWUSAGE;
-  
+
        channame = argv[3];
        msg = argv[4];
+       msglen = strlen(msg);
 
-       ast_cli(fd, "Sending %s to %s\n",msg, channame);
-  
-       {
-               struct chan_list *tmp=get_chan_by_ast_name(channame);
-    
-               if (!tmp) {
-                       ast_cli(fd, "Sending %s to %s failed Channel does not exist\n",msg, channame);
-                       return 0; 
-               } else {
+       ast_cli(fd, "Sending %s to %s\n", msg, channame);
+
+       tmp = get_chan_by_ast_name(channame);
+
+       if (!tmp) {
+               ast_cli(fd, "Sending %s to %s failed Channel does not exist\n", msg, channame);
+               return 0; 
+       }
 #if 1
-                       int i;
-                       int msglen = strlen(msg);
-                       for (i=0; i<msglen; i++) {
-                               ast_cli(fd, "Sending: %c\n",msg[i]);
-                               send_digit_to_chan(tmp, msg[i]);
-                               /* res = ast_safe_sleep(tmp->ast, 250); */
-                               usleep(250000);
-                               /* res = ast_waitfor(tmp->ast,100); */
-                       }
+       for (i = 0; i < msglen; i++) {
+               ast_cli(fd, "Sending: %c\n", msg[i]);
+               send_digit_to_chan(tmp, msg[i]);
+               /* res = ast_safe_sleep(tmp->ast, 250); */
+               usleep(250000);
+               /* res = ast_waitfor(tmp->ast,100); */
+       }
 #else
-                       int res;
-                       res = ast_dtmf_stream(tmp->ast,NULL,msg,250);
+       ast_dtmf_stream(tmp->ast, NULL, msg, 250);
 #endif
-               }
-       }
-  
+
        return 0; 
 }
 
-static int misdn_toggle_echocancel (int fd, int argc, char *argv[])
+static int misdn_toggle_echocancel(int fd, int argc, char *argv[])
 {
-       char *channame; 
+       char *channame;
+       struct chan_list *tmp;
 
        if (argc != 4)
                return RESULT_SHOWUSAGE;
@@ -1320,55 +1326,50 @@ static int misdn_toggle_echocancel (int fd, int argc, char *argv[])
   
        ast_cli(fd, "Toggling EchoCancel on %s\n", channame);
   
-       {
-               struct chan_list *tmp=get_chan_by_ast_name(channame);
+       tmp = get_chan_by_ast_name(channame);
     
-               if (!tmp) {
-                       ast_cli(fd, "Toggling EchoCancel %s failed Channel does not exist\n", channame);
-                       return 0; 
-               } else {
-                       
-                       tmp->toggle_ec=tmp->toggle_ec?0:1;
+       if (!tmp) {
+               ast_cli(fd, "Toggling EchoCancel %s failed Channel does not exist\n", channame);
+               return 0; 
+       }
+
+       tmp->toggle_ec = tmp->toggle_ec?0:1;
 
-                       if (tmp->toggle_ec) {
+       if (tmp->toggle_ec) {
 #ifdef MISDN_1_2
-                               update_pipeline_config(tmp->bc);
+               update_pipeline_config(tmp->bc);
 #else
-                               update_ec_config(tmp->bc);
+               update_ec_config(tmp->bc);
 #endif
-                               manager_ec_enable(tmp->bc);
-                       } else {
-                               manager_ec_disable(tmp->bc);
-                       }
-               }
+               manager_ec_enable(tmp->bc);
+       } else {
+               manager_ec_disable(tmp->bc);
        }
-  
+
        return 0; 
 }
 
-static int misdn_send_display (int fd, int argc, char *argv[])
+static int misdn_send_display(int fd, int argc, char *argv[])
 {
        char *channame; 
        char *msg; 
-  
+       struct chan_list *tmp;
+
        if (argc != 5)
                return RESULT_SHOWUSAGE;
-  
+
        channame = argv[3];
        msg = argv[4];
 
-       ast_cli(fd, "Sending %s to %s\n",msg, channame);
-       {
-               struct chan_list *tmp;
-               tmp=get_chan_by_ast_name(channame);
+       ast_cli(fd, "Sending %s to %s\n", msg, channame);
+       tmp = get_chan_by_ast_name(channame);
     
-               if (tmp && tmp->bc) {
-                       ast_copy_string(tmp->bc->display, msg, sizeof(tmp->bc->display));
-                       misdn_lib_send_event(tmp->bc, EVENT_INFORMATION);
-               } else {
-                       ast_cli(fd,"No such channel %s\n",channame);
-                       return RESULT_FAILURE;
-               }
+       if (tmp && tmp->bc) {
+               ast_copy_string(tmp->bc->display, msg, sizeof(tmp->bc->display));
+               misdn_lib_send_event(tmp->bc, EVENT_INFORMATION);
+       } else {
+               ast_cli(fd, "No such channel %s\n", channame);
+               return RESULT_FAILURE;
        }
 
        return RESULT_SUCCESS ;
@@ -1377,18 +1378,16 @@ static int misdn_send_display (int fd, int argc, char *argv[])
 static char *complete_ch_helper(const char *line, const char *word, int pos, int state, int rpos)
 {
        struct ast_channel *c;
-       int which=0;
+       int which = 0;
        char *ret;
        if (pos != rpos)
                return NULL;
-       c = ast_channel_walk_locked(NULL);
-       while(c) {
+       for (c = ast_channel_walk_locked(NULL); c; c = ast_channel_walk_locked(c)) {
                if (!strncasecmp(word, c->name, strlen(word))) {
                        if (++which > state)
                                break;
                }
                ast_mutex_unlock(&c->lock);
-               c = ast_channel_walk_locked(c);
        }
        if (c) {
                ret = strdup(c->name);
@@ -1409,14 +1408,16 @@ static char *complete_debug_port (const char *line, const char *word, int pos, i
                return NULL;
 
        switch (pos) {
-       case 4: if (*word == 'p')
-                               return strdup("port");
-                       else if (*word == 'o')
-                               return strdup("only");
-                       break;
-       case 6: if (*word == 'o')
-                               return strdup("only");
-                       break;
+       case 4:
+               if (*word == 'p')
+                       return strdup("port");
+               else if (*word == 'o')
+                       return strdup("only");
+               break;
+       case 6:
+               if (*word == 'o')
+                       return strdup("only");
+               break;
        }
        return NULL;
 }
@@ -1430,37 +1431,38 @@ static char *complete_show_config (const char *line, const char *word, int pos,
        int port = 0;
 
        switch (pos) {
-       case 3: if ((!strncmp(word, "description", wordlen)) && (++which > state))
-                               return strdup("description");
-                       if ((!strncmp(word, "descriptions", wordlen)) && (++which > state))
-                               return strdup("descriptions");
-                       if ((!strncmp(word, "0", wordlen)) && (++which > state))
-                               return strdup("0");
-                       while ((port = misdn_cfg_get_next_port(port)) != -1) {
-                               snprintf(buffer, sizeof(buffer), "%d", port);
-                               if ((!strncmp(word, buffer, wordlen)) && (++which > state)) {
-                                       return strdup(buffer);
-                               }
+       case 3:
+               if ((!strncmp(word, "description", wordlen)) && (++which > state))
+                       return strdup("description");
+               if ((!strncmp(word, "descriptions", wordlen)) && (++which > state))
+                       return strdup("descriptions");
+               if ((!strncmp(word, "0", wordlen)) && (++which > state))
+                       return strdup("0");
+               while ((port = misdn_cfg_get_next_port(port)) != -1) {
+                       snprintf(buffer, sizeof(buffer), "%d", port);
+                       if ((!strncmp(word, buffer, wordlen)) && (++which > state)) {
+                               return strdup(buffer);
                        }
-                       break;
+               }
+               break;
        case 4:
-                       if (strstr(line, "description ")) {
-                               for (elem = MISDN_CFG_FIRST + 1; elem < MISDN_GEN_LAST; ++elem) {
-                                       if ((elem == MISDN_CFG_LAST) || (elem == MISDN_GEN_FIRST))
-                                               continue;
-                                       misdn_cfg_get_name(elem, buffer, BUFFERSIZE);
-                                       if (!wordlen || !strncmp(word, buffer, wordlen)) {
-                                               if (++which > state)
-                                                       return strdup(buffer);
-                                       }
+               if (strstr(line, "description ")) {
+                       for (elem = MISDN_CFG_FIRST + 1; elem < MISDN_GEN_LAST; ++elem) {
+                               if ((elem == MISDN_CFG_LAST) || (elem == MISDN_GEN_FIRST))
+                                       continue;
+                               misdn_cfg_get_name(elem, buffer, sizeof(buffer));
+                               if (!wordlen || !strncmp(word, buffer, wordlen)) {
+                                       if (++which > state)
+                                               return strdup(buffer);
                                }
-                       } else if (strstr(line, "descriptions ")) {
-                               if ((!wordlen || !strncmp(word, "general", wordlen)) && (++which > state))
-                                       return strdup("general");
-                               if ((!wordlen || !strncmp(word, "ports", wordlen)) && (++which > state))
-                                       return strdup("ports");
                        }
-                       break;
+               } else if (strstr(line, "descriptions ")) {
+                       if ((!wordlen || !strncmp(word, "general", wordlen)) && (++which > state))
+                               return strdup("general");
+                       if ((!wordlen || !strncmp(word, "ports", wordlen)) && (++which > state))
+                               return strdup("ports");
+               }
+               break;
        }
        return NULL;
 }
@@ -1513,137 +1515,126 @@ static struct ast_cli_entry chan_misdn_clis[] = {
                "Usage: misdn set crypt debug <level>\n" }
 };
 
-static int update_config (struct chan_list *ch, int orig) 
+static int update_config(struct chan_list *ch, int orig) 
 {
+       struct ast_channel *ast;
+       struct misdn_bchannel *bc;
+       int port, hdlc = 0;
+       int pres, screen;
+
        if (!ch) {
                ast_log(LOG_WARNING, "Cannot configure without chanlist\n");
                return -1;
        }
-       
-       struct ast_channel *ast=ch->ast;
-       struct misdn_bchannel *bc=ch->bc;
-       if (! ast || ! bc ) {
+
+       ast = ch->ast;
+       bc = ch->bc;
+       if (! ast || ! bc) {
                ast_log(LOG_WARNING, "Cannot configure without ast || bc\n");
                return -1;
        }
-       
-       int port=bc->port;
-       
-       chan_misdn_log(7,port,"update_config: Getting Config\n");
 
-       int hdlc=0;
-       misdn_cfg_get( port, MISDN_CFG_HDLC, &hdlc, sizeof(int));
+       port = bc->port;
+
+       chan_misdn_log(7, port, "update_config: Getting Config\n");
+
+       misdn_cfg_get(port, MISDN_CFG_HDLC, &hdlc, sizeof(int));
        
        if (hdlc) {
                switch (bc->capability) {
                case INFO_CAPABILITY_DIGITAL_UNRESTRICTED:
                case INFO_CAPABILITY_DIGITAL_RESTRICTED:
-                       chan_misdn_log(1,bc->port," --> CONF HDLC\n");
-                       bc->hdlc=1;
+                       chan_misdn_log(1, bc->port, " --> CONF HDLC\n");
+                       bc->hdlc = 1;
                        break;
                }
-               
        }
-       
-       
-       int pres, screen;
-                       
-       misdn_cfg_get( port, MISDN_CFG_PRES, &pres, sizeof(int));
-       misdn_cfg_get( port, MISDN_CFG_SCREEN, &screen, sizeof(int));
-       chan_misdn_log(2,port," --> pres: %d screen: %d\n",pres, screen);
+
+
+       misdn_cfg_get(port, MISDN_CFG_PRES, &pres, sizeof(pres));
+       misdn_cfg_get(port, MISDN_CFG_SCREEN, &screen, sizeof(screen));
+       chan_misdn_log(2, port, " --> pres: %d screen: %d\n", pres, screen);
                
        if ( (pres + screen) < 0 ) {
 
-               chan_misdn_log(2,port," --> pres: %x\n", ast->cid.cid_pres);
+               chan_misdn_log(2, port, " --> pres: %x\n", ast->cid.cid_pres);
                        
-               switch (ast->cid.cid_pres & 0x60){
+               switch (ast->cid.cid_pres & 0x60) {
                                
                case AST_PRES_RESTRICTED:
-                       bc->pres=1;
+                       bc->pres = 1;
                        chan_misdn_log(2, port, " --> PRES: Restricted (0x1)\n");
                        break;
-                               
-                               
                case AST_PRES_UNAVAILABLE:
-                       bc->pres=2;
+                       bc->pres = 2;
                        chan_misdn_log(2, port, " --> PRES: Unavailable (0x2)\n");
                        break;
-                               
                default:
-                       bc->pres=0;
+                       bc->pres = 0;
                        chan_misdn_log(2, port, " --> PRES: Allowed (0x0)\n");
                }
                        
-               switch (ast->cid.cid_pres & 0x3){
-                               
+               switch (ast->cid.cid_pres & 0x3) {
+
                case AST_PRES_USER_NUMBER_UNSCREENED:
-                       bc->screen=0;
+                       bc->screen = 0;
                        chan_misdn_log(2, port, " --> SCREEN: Unscreened (0x0)\n");
                        break;
-
                case AST_PRES_USER_NUMBER_PASSED_SCREEN:
-                       bc->screen=1;
+                       bc->screen = 1;
                        chan_misdn_log(2, port, " --> SCREEN: Passed Screen (0x1)\n");
                        break;
                case AST_PRES_USER_NUMBER_FAILED_SCREEN:
-                       bc->screen=2;
+                       bc->screen = 2;
                        chan_misdn_log(2, port, " --> SCREEN: Failed Screen (0x2)\n");
                        break;
-                               
                case AST_PRES_NETWORK_NUMBER:
-                       bc->screen=3;
+                       bc->screen = 3;
                        chan_misdn_log(2, port, " --> SCREEN: Network Nr. (0x3)\n");
                        break;
-                               
                default:
-                       bc->screen=0;
+                       bc->screen = 0;
                        chan_misdn_log(2, port, " --> SCREEN: Unscreened (0x0)\n");
                }
-
-                       
        } else {
-               bc->screen=screen;
-               bc->pres=pres;
+               bc->screen = screen;
+               bc->pres = pres;
        }
 
        return 0;
-       
 }
 
 
-
-
 static void config_jitterbuffer(struct chan_list *ch)
 {
-       struct misdn_bchannel *bc=ch->bc;
-       int len=ch->jb_len, threshold=ch->jb_upper_threshold;
+       struct misdn_bchannel *bc = ch->bc;
+       int len = ch->jb_len, threshold = ch->jb_upper_threshold;
        
-       chan_misdn_log(5,bc->port, "config_jb: Called\n");
+       chan_misdn_log(5, bc->port, "config_jb: Called\n");
        
-       if ( ! len ) {
-               chan_misdn_log(1,bc->port, "config_jb: Deactivating Jitterbuffer\n");
+       if (! len) {
+               chan_misdn_log(1, bc->port, "config_jb: Deactivating Jitterbuffer\n");
                bc->nojitter=1;
        } else {
-               
-               if (len <=100 || len > 8000) {
-                       chan_misdn_log(0,bc->port,"config_jb: Jitterbuffer out of Bounds, setting to 1000\n");
-                       len=1000;
+               if (len <= 100 || len > 8000) {
+                       chan_misdn_log(0, bc->port, "config_jb: Jitterbuffer out of Bounds, setting to 1000\n");
+                       len = 1000;
                }
-               
+
                if ( threshold > len ) {
-                       chan_misdn_log(0,bc->port,"config_jb: Jitterbuffer Threshold > Jitterbuffer setting to Jitterbuffer -1\n");
+                       chan_misdn_log(0, bc->port, "config_jb: Jitterbuffer Threshold > Jitterbuffer setting to Jitterbuffer -1\n");
                }
-               
+
                if ( ch->jb) {
-                       cb_log(0,bc->port,"config_jb: We've got a Jitterbuffer Already on this port.\n");
+                       cb_log(0, bc->port, "config_jb: We've got a Jitterbuffer Already on this port.\n");
                        misdn_jb_destroy(ch->jb);
-                       ch->jb=NULL;
+                       ch->jb = NULL;
                }
-               
+
                ch->jb=misdn_jb_init(len, threshold);
 
                if (!ch->jb ) 
-                       bc->nojitter=1;
+                       bc->nojitter = 1;
        }
 }
 
@@ -1652,16 +1643,16 @@ void debug_numplan(int port, int numplan, char *type)
 {
        switch (numplan) {
        case NUMPLAN_INTERNATIONAL:
-               chan_misdn_log(2, port, " --> %s: International\n",type);
+               chan_misdn_log(2, port, " --> %s: International\n", type);
                break;
        case NUMPLAN_NATIONAL:
-               chan_misdn_log(2, port, " --> %s: National\n",type);
+               chan_misdn_log(2, port, " --> %s: National\n", type);
                break;
        case NUMPLAN_SUBSCRIBER:
-               chan_misdn_log(2, port, " --> %s: Subscriber\n",type);
+               chan_misdn_log(2, port, " --> %s: Subscriber\n", type);
                break;
        case NUMPLAN_UNKNOWN:
-               chan_misdn_log(2, port, " --> %s: Unknown\n",type);
+               chan_misdn_log(2, port, " --> %s: Unknown\n", type);
                break;
                /* Maybe we should cut off the prefix if present ? */
        default:
@@ -1671,8 +1662,6 @@ void debug_numplan(int port, int numplan, char *type)
 }
 
 
-
-
 #ifdef MISDN_1_2
 static int update_pipeline_config(struct misdn_bchannel *bc)
 {
@@ -1683,11 +1672,11 @@ static int update_pipeline_config(struct misdn_bchannel *bc)
        if (*bc->pipeline)
                return 0;
 
-       misdn_cfg_get(bc->port, MISDN_CFG_ECHOCANCEL, &ec, sizeof(int));
+       misdn_cfg_get(bc->port, MISDN_CFG_ECHOCANCEL, &ec, sizeof(ec));
        if (ec == 1)
-               snprintf(bc->pipeline, sizeof(bc->pipeline) - 1, "mg2ec");
+               snprintf(bc->pipeline, sizeof(bc->pipeline), "mg2ec");
        else if (ec > 1)
-               snprintf(bc->pipeline, sizeof(bc->pipeline) - 1, "mg2ec(deftaps=%d)", ec);
+               snprintf(bc->pipeline, sizeof(bc->pipeline), "mg2ec(deftaps=%d)", ec);
 
        return 0;
 }
@@ -1695,15 +1684,15 @@ static int update_pipeline_config(struct misdn_bchannel *bc)
 static int update_ec_config(struct misdn_bchannel *bc)
 {
        int ec;
-       int port=bc->port;
-               
-       misdn_cfg_get( port, MISDN_CFG_ECHOCANCEL, &ec, sizeof(int));
-       
-       if (ec == 1 ) {
-               bc->ec_enable=1;
-       } else if ( ec > 1 ) {
-               bc->ec_enable=1;
-               bc->ec_deftaps=ec;
+       int port = bc->port;
+
+       misdn_cfg_get(port, MISDN_CFG_ECHOCANCEL, &ec, sizeof(ec));
+
+       if (ec == 1) {
+               bc->ec_enable = 1;
+       } else if (ec > 1) {
+               bc->ec_enable = 1;
+               bc->ec_deftaps = ec;
        }
 
        return 0;
@@ -1711,79 +1700,76 @@ static int update_ec_config(struct misdn_bchannel *bc)
 #endif
 
 
-static int read_config(struct chan_list *ch, int orig) {
+static int read_config(struct chan_list *ch, int orig)
+{
+       struct ast_channel *ast;
+       struct misdn_bchannel *bc;
+       int port, hdlc = 0;
+       char lang[BUFFERSIZE + 1], localmusicclass[BUFFERSIZE + 1], faxdetect[BUFFERSIZE + 1];
+       char buf[256], buf2[256];
+       ast_group_t pg, cg;
 
        if (!ch) {
                ast_log(LOG_WARNING, "Cannot configure without chanlist\n");
                return -1;
        }
 
-       struct ast_channel *ast=ch->ast;
-       struct misdn_bchannel *bc=ch->bc;
-       if (! ast || ! bc ) {
+       ast = ch->ast;
+       bc = ch->bc;
+       if (! ast || ! bc) {
                ast_log(LOG_WARNING, "Cannot configure without ast || bc\n");
                return -1;
        }
        
-       int port=bc->port;
-       
-       chan_misdn_log(1,port,"read_config: Getting Config\n");
+       port = bc->port;
 
-       char lang[BUFFERSIZE+1];
-       
+       chan_misdn_log(1, port, "read_config: Getting Config\n");
 
-       misdn_cfg_get( port, MISDN_CFG_LANGUAGE, lang, BUFFERSIZE);
+       misdn_cfg_get(port, MISDN_CFG_LANGUAGE, lang, sizeof(lang));
        ast_string_field_set(ast, language, lang);
 
-       char localmusicclass[BUFFERSIZE+1];
-       
-       misdn_cfg_get( port, MISDN_CFG_MUSICCLASS, localmusicclass, BUFFERSIZE);
+       misdn_cfg_get(port, MISDN_CFG_MUSICCLASS, localmusicclass, sizeof(localmusicclass));
        ast_string_field_set(ast, musicclass, localmusicclass);
-       
-       
-       misdn_cfg_get( port, MISDN_CFG_TXGAIN, &bc->txgain, sizeof(int));
-       misdn_cfg_get( port, MISDN_CFG_RXGAIN, &bc->rxgain, sizeof(int));
-       
-       misdn_cfg_get( port, MISDN_CFG_INCOMING_EARLY_AUDIO, &ch->incoming_early_audio, sizeof(int));
-       
-       misdn_cfg_get( port, MISDN_CFG_SENDDTMF, &bc->send_dtmf, sizeof(int));
 
-       misdn_cfg_get( port, MISDN_CFG_NEED_MORE_INFOS, &bc->need_more_infos, sizeof(int));
-       misdn_cfg_get( port, MISDN_CFG_NTTIMEOUT, &ch->nttimeout, sizeof(int));
-       
-       misdn_cfg_get( port, MISDN_CFG_NOAUTORESPOND_ON_SETUP, &ch->noautorespond_on_setup, sizeof(int));
-       
-       misdn_cfg_get( port, MISDN_CFG_FAR_ALERTING, &ch->far_alerting, sizeof(int));
+       misdn_cfg_get(port, MISDN_CFG_TXGAIN, &bc->txgain, sizeof(bc->txgain));
+       misdn_cfg_get(port, MISDN_CFG_RXGAIN, &bc->rxgain, sizeof(bc->rxgain));
+
+       misdn_cfg_get(port, MISDN_CFG_INCOMING_EARLY_AUDIO, &ch->incoming_early_audio, sizeof(ch->incoming_early_audio));
+
+       misdn_cfg_get(port, MISDN_CFG_SENDDTMF, &bc->send_dtmf, sizeof(bc->send_dtmf));
+
+       misdn_cfg_get(port, MISDN_CFG_NEED_MORE_INFOS, &bc->need_more_infos, sizeof(bc->need_more_infos));
+       misdn_cfg_get(port, MISDN_CFG_NTTIMEOUT, &ch->nttimeout, sizeof(ch->nttimeout));
+
+       misdn_cfg_get(port, MISDN_CFG_NOAUTORESPOND_ON_SETUP, &ch->noautorespond_on_setup, sizeof(ch->noautorespond_on_setup));
+
+       misdn_cfg_get(port, MISDN_CFG_FAR_ALERTING, &ch->far_alerting, sizeof(ch->far_alerting));
+
+       misdn_cfg_get(port, MISDN_CFG_ALLOWED_BEARERS, &ch->allowed_bearers, sizeof(ch->allowed_bearers));
+
+       misdn_cfg_get(port, MISDN_CFG_FAXDETECT, faxdetect, sizeof(faxdetect));
+
+       misdn_cfg_get(port, MISDN_CFG_HDLC, &hdlc, sizeof(hdlc));
 
-       misdn_cfg_get( port, MISDN_CFG_ALLOWED_BEARERS, &ch->allowed_bearers, BUFFERSIZE);
-       
-       char faxdetect[BUFFERSIZE+1];
-       misdn_cfg_get( port, MISDN_CFG_FAXDETECT, faxdetect, BUFFERSIZE);
-       
-       int hdlc=0;
-       misdn_cfg_get( port, MISDN_CFG_HDLC, &hdlc, sizeof(int));
-       
        if (hdlc) {
                switch (bc->capability) {
                case INFO_CAPABILITY_DIGITAL_UNRESTRICTED:
                case INFO_CAPABILITY_DIGITAL_RESTRICTED:
-                       chan_misdn_log(1,bc->port," --> CONF HDLC\n");
-                       bc->hdlc=1;
+                       chan_misdn_log(1, bc->port, " --> CONF HDLC\n");
+                       bc->hdlc = 1;
                        break;
                }
                
        }
        /*Initialize new Jitterbuffer*/
-       {
-               misdn_cfg_get( port, MISDN_CFG_JITTERBUFFER, &ch->jb_len, sizeof(int));
-               misdn_cfg_get( port, MISDN_CFG_JITTERBUFFER_UPPER_THRESHOLD, &ch->jb_upper_threshold, sizeof(int));
-               
-               config_jitterbuffer(ch);
-       }
-       
-       misdn_cfg_get( bc->port, MISDN_CFG_CONTEXT, ch->context, sizeof(ch->context));
-       
-       ast_copy_string (ast->context,ch->context,sizeof(ast->context));        
+       misdn_cfg_get(port, MISDN_CFG_JITTERBUFFER, &ch->jb_len, sizeof(ch->jb_len));
+       misdn_cfg_get(port, MISDN_CFG_JITTERBUFFER_UPPER_THRESHOLD, &ch->jb_upper_threshold, sizeof(ch->jb_upper_threshold));
+
+       config_jitterbuffer(ch);
+
+       misdn_cfg_get(bc->port, MISDN_CFG_CONTEXT, ch->context, sizeof(ch->context));
+
+       ast_copy_string(ast->context, ch->context, sizeof(ast->context));
 
 #ifdef MISDN_1_2
        update_pipeline_config(bc);
@@ -1791,130 +1777,102 @@ static int read_config(struct chan_list *ch, int orig) {
        update_ec_config(bc);
 #endif
 
-       {
-               int eb3;
-               
-               misdn_cfg_get( bc->port, MISDN_CFG_EARLY_BCONNECT, &eb3, sizeof(int));
-               bc->early_bconnect=eb3;
-       }
-       
-       port=bc->port;
-       
-       {
-               char buf[256];
-               ast_group_t pg,cg;
-               
-               misdn_cfg_get(port, MISDN_CFG_PICKUPGROUP, &pg, sizeof(pg));
-               misdn_cfg_get(port, MISDN_CFG_CALLGROUP, &cg, sizeof(cg));
-               
-               chan_misdn_log(5, port, " --> * CallGrp:%s PickupGrp:%s\n",ast_print_group(buf,sizeof(buf),cg),ast_print_group(buf,sizeof(buf),pg));
-               ast->pickupgroup=pg;
-               ast->callgroup=cg;
-       }
+       misdn_cfg_get(bc->port, MISDN_CFG_EARLY_BCONNECT, &bc->early_bconnect, sizeof(bc->early_bconnect));
+
+       misdn_cfg_get(port, MISDN_CFG_PICKUPGROUP, &pg, sizeof(pg));
+       misdn_cfg_get(port, MISDN_CFG_CALLGROUP, &cg, sizeof(cg));
+
+       chan_misdn_log(5, port, " --> * CallGrp:%s PickupGrp:%s\n", ast_print_group(buf, sizeof(buf), cg), ast_print_group(buf2, sizeof(buf2), pg));
+       ast->pickupgroup = pg;
+       ast->callgroup = cg;
        
-       if ( orig  == ORG_AST) {
-               misdn_cfg_get( port, MISDN_CFG_TE_CHOOSE_CHANNEL, &(bc->te_choose_channel), sizeof(int));
-               
+       if (orig == ORG_AST) {
+               char callerid[BUFFERSIZE + 1];
+
+               misdn_cfg_get(port, MISDN_CFG_TE_CHOOSE_CHANNEL, &(bc->te_choose_channel), sizeof(bc->te_choose_channel));
+
                if (strstr(faxdetect, "outgoing") || strstr(faxdetect, "both")) {
                        if (strstr(faxdetect, "nojump"))
-                               ch->faxdetect=2;
+                               ch->faxdetect = 2;
                        else
-                               ch->faxdetect=1;
+                               ch->faxdetect = 1;
                }
 
-               {
-                       char callerid[BUFFERSIZE+1];
-                       misdn_cfg_get( port, MISDN_CFG_CALLERID, callerid, BUFFERSIZE);
-                       if ( ! ast_strlen_zero(callerid) ) {
-                               chan_misdn_log(1, port, " --> * Setting Cid to %s\n", callerid);
-                               {
-                                       int l = sizeof(bc->oad);
-                                       strncpy(bc->oad,callerid, l);
-                                       bc->oad[l-1] = 0;
-                               }
-
-                       }
-
-                       
-                       misdn_cfg_get( port, MISDN_CFG_DIALPLAN, &bc->dnumplan, sizeof(int));
-                       misdn_cfg_get( port, MISDN_CFG_LOCALDIALPLAN, &bc->onumplan, sizeof(int));
-                       misdn_cfg_get( port, MISDN_CFG_CPNDIALPLAN, &bc->cpnnumplan, sizeof(int));
-                       debug_numplan(port, bc->dnumplan,"TON");
-                       debug_numplan(port, bc->onumplan,"LTON");
-                       debug_numplan(port, bc->cpnnumplan,"CTON");
+               misdn_cfg_get(port, MISDN_CFG_CALLERID, callerid, sizeof(callerid));
+               if ( ! ast_strlen_zero(callerid) ) {
+                       chan_misdn_log(1, port, " --> * Setting Cid to %s\n", callerid);
+                       ast_copy_string(bc->oad, callerid, sizeof(bc->oad));
                }
 
+               misdn_cfg_get(port, MISDN_CFG_DIALPLAN, &bc->dnumplan, sizeof(bc->dnumplan));
+               misdn_cfg_get(port, MISDN_CFG_LOCALDIALPLAN, &bc->onumplan, sizeof(bc->onumplan));
+               misdn_cfg_get(port, MISDN_CFG_CPNDIALPLAN, &bc->cpnnumplan, sizeof(bc->cpnnumplan));
+               debug_numplan(port, bc->dnumplan, "TON");
+               debug_numplan(port, bc->onumplan, "LTON");
+               debug_numplan(port, bc->cpnnumplan, "CTON");
+
                ch->overlap_dial = 0;
        } else { /** ORIGINATOR MISDN **/
+               char prefix[BUFFERSIZE + 1] = "";
+
                if (strstr(faxdetect, "incoming") || strstr(faxdetect, "both")) {
                        if (strstr(faxdetect, "nojump"))
-                               ch->faxdetect=2;
+                               ch->faxdetect = 2;
                        else
-                               ch->faxdetect=1;
+                               ch->faxdetect = 1;
                }
-       
-               misdn_cfg_get( port, MISDN_CFG_CPNDIALPLAN, &bc->cpnnumplan, sizeof(int));
-               debug_numplan(port, bc->cpnnumplan,"CTON");
-               
-               char prefix[BUFFERSIZE+1]="";
-               switch( bc->onumplan ) {
+
+               misdn_cfg_get(port, MISDN_CFG_CPNDIALPLAN, &bc->cpnnumplan, sizeof(bc->cpnnumplan));
+               debug_numplan(port, bc->cpnnumplan, "CTON");
+
+               switch (bc->onumplan) {
                case NUMPLAN_INTERNATIONAL:
-                       misdn_cfg_get( bc->port, MISDN_CFG_INTERNATPREFIX, prefix, BUFFERSIZE);
+                       misdn_cfg_get(bc->port, MISDN_CFG_INTERNATPREFIX, prefix, sizeof(prefix));
                        break;
-                       
+
                case NUMPLAN_NATIONAL:
-                       misdn_cfg_get( bc->port, MISDN_CFG_NATPREFIX, prefix, BUFFERSIZE);
+                       misdn_cfg_get(bc->port, MISDN_CFG_NATPREFIX, prefix, sizeof(prefix));
                        break;
                default:
                        break;
                }
-               
-               {
-                       int l = strlen(prefix) + strlen(bc->oad);
-                       char tmp[l+1];
-                       strcpy(tmp,prefix);
-                       strcat(tmp,bc->oad);
-                       strcpy(bc->oad,tmp);
-               }
-               
+
+               ast_copy_string(buf, bc->oad, sizeof(buf));
+               snprintf(bc->oad, sizeof(bc->oad), "%s%s", prefix, buf);
+
                if (!ast_strlen_zero(bc->dad)) {
-                       ast_copy_string(bc->orig_dad,bc->dad, sizeof(bc->orig_dad));
+                       ast_copy_string(bc->orig_dad, bc->dad, sizeof(bc->orig_dad));
                }
-               
+
                if ( ast_strlen_zero(bc->dad) && !ast_strlen_zero(bc->keypad)) {
-                       ast_copy_string(bc->dad,bc->keypad, sizeof(bc->dad));
+                       ast_copy_string(bc->dad, bc->keypad, sizeof(bc->dad));
                }
 
                prefix[0] = 0;
-               
-               switch( bc->dnumplan ) {
+
+               switch (bc->dnumplan) {
                case NUMPLAN_INTERNATIONAL:
-                       misdn_cfg_get( bc->port, MISDN_CFG_INTERNATPREFIX, prefix, BUFFERSIZE);
+                       misdn_cfg_get(bc->port, MISDN_CFG_INTERNATPREFIX, prefix, sizeof(prefix));
                        break;
                case NUMPLAN_NATIONAL:
-                       misdn_cfg_get( bc->port, MISDN_CFG_NATPREFIX, prefix, BUFFERSIZE);
+                       misdn_cfg_get(bc->port, MISDN_CFG_NATPREFIX, prefix, sizeof(prefix));
                        break;
                default:
                        break;
                }
-               
-               {
-                       int l = strlen(prefix) + strlen(bc->dad);
-                       char tmp[l+1];
-                       strcpy(tmp,prefix);
-                       strcat(tmp,bc->dad);
-                       strcpy(bc->dad,tmp);
-               }
-               
-               if ( strcmp(bc->dad,ast->exten)) {
+
+               ast_copy_string(buf, bc->dad, sizeof(buf));
+               snprintf(bc->dad, sizeof(bc->dad), "%s%s", prefix, buf);
+
+               if (strcmp(bc->dad, ast->exten)) {
                        ast_copy_string(ast->exten, bc->dad, sizeof(ast->exten));
                }
-               
+
                ast_set_callerid(ast, bc->oad, NULL, bc->oad);
-               
+
                if ( !ast_strlen_zero(bc->rad) ) {
                        if (ast->cid.cid_rdnis)
-                               free(ast->cid.cid_rdnis);
+                               ast_free(ast->cid.cid_rdnis);
                        ast->cid.cid_rdnis = strdup(bc->rad);
                }
        
@@ -1925,13 +1883,13 @@ static int read_config(struct chan_list *ch, int orig) {
        ch->overlap_dial_task = -1;
        
        if (ch->faxdetect) {
-               misdn_cfg_get( port, MISDN_CFG_FAXDETECT_TIMEOUT, &ch->faxdetect_timeout, sizeof(ch->faxdetect_timeout));
+               misdn_cfg_get(port, MISDN_CFG_FAXDETECT_TIMEOUT, &ch->faxdetect_timeout, sizeof(ch->faxdetect_timeout));
                if (!ch->dsp)
                        ch->dsp = ast_dsp_new();
                if (ch->dsp)
                        ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT | DSP_FEATURE_FAX_DETECT);
                if (!ch->trans)
-                       ch->trans=ast_translator_build_path(AST_FORMAT_SLINEAR, AST_FORMAT_ALAW);
+                       ch->trans = ast_translator_build_path(AST_FORMAT_SLINEAR, AST_FORMAT_ALAW);
        }
 
        /* AOCD initialization */
@@ -1947,27 +1905,24 @@ static int read_config(struct chan_list *ch, int orig) {
 
 static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
 {
-       int port=0;
+       int port = 0;
        int r;
-       struct chan_list *ch=MISDN_ASTERISK_TECH_PVT(ast);
+       int exceed;
+       int bridging;
+       struct chan_list *ch = MISDN_ASTERISK_TECH_PVT(ast);
        struct misdn_bchannel *newbc;
-       char *opts=NULL, *ext,*tokb;
-       char dest_cp[256];
+       char *opts = NULL, *ext, *tokb;
+       char *dest_cp = ast_strdupa(dest);
 
-       {
-               strncpy(dest_cp,dest,sizeof(dest_cp)-1);
-               dest_cp[sizeof(dest_cp)]=0;
-               
-               ext=strtok_r(dest_cp,"/",&tokb);
-               
+       ext = strtok_r(dest_cp, "/", &tokb);
+
+       if (ext) {
+               ext = strtok_r(NULL, "/", &tokb);
                if (ext) {
-                       ext=strtok_r(NULL,"/",&tokb);
-                       if (ext) {
-                               opts=strtok_r(NULL,"/",&tokb);
-                       } else {
-                               chan_misdn_log(0,0,"misdn_call: No Extension given!\n");
-                               return -1;
-                       }
+                       opts = strtok_r(NULL, "/", &tokb);
+               } else {
+                       chan_misdn_log(0, 0, "misdn_call: No Extension given!\n");
+                       return -1;
                }
        }
 
@@ -1978,127 +1933,110 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
 
        if (((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) || !dest  ) {
                ast_log(LOG_WARNING, " --> ! misdn_call called on %s, neither down nor reserved (or dest==NULL)\n", ast->name);
-               ast->hangupcause=41;
+               ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;
                ast_setstate(ast, AST_STATE_DOWN);
                return -1;
        }
 
        if (!ch) {
                ast_log(LOG_WARNING, " --> ! misdn_call called on %s, neither down nor reserved (or dest==NULL)\n", ast->name);
-               ast->hangupcause=41;
+               ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;
                ast_setstate(ast, AST_STATE_DOWN);
                return -1;
        }
        
-       newbc=ch->bc;
+       newbc = ch->bc;
        
        if (!newbc) {
                ast_log(LOG_WARNING, " --> ! misdn_call called on %s, neither down nor reserved (or dest==NULL)\n", ast->name);
-               ast->hangupcause=41;
+               ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;
                ast_setstate(ast, AST_STATE_DOWN);
                return -1;
        }
        
-       port=newbc->port;
-
+       port = newbc->port;
 
-       int exceed;
-       if ((exceed=add_out_calls(port))) {
+       if ((exceed = add_out_calls(port))) {
                char tmp[16];
-               sprintf(tmp,"%d",exceed);
-               pbx_builtin_setvar_helper(ast,"MAX_OVERFLOW",tmp);
+               snprintf(tmp, sizeof(tmp), "%d", exceed);
+               pbx_builtin_setvar_helper(ast, "MAX_OVERFLOW", tmp);
                return -1;
        }
        
-       chan_misdn_log(1, port, "* CALL: %s\n",dest);
+       chan_misdn_log(1, port, "* CALL: %s\n", dest);
        
-       chan_misdn_log(2, port, " --> * dad:%s tech:%s ctx:%s\n",ast->exten,ast->name, ast->context);
+       chan_misdn_log(2, port, " --> * dad:%s tech:%s ctx:%s\n", ast->exten, ast->name, ast->context);
        
-       chan_misdn_log(3, port, " --> * adding2newbc ext %s\n",ast->exten);
+       chan_misdn_log(3, port, " --> * adding2newbc ext %s\n", ast->exten);
        if (ast->exten) {
-               int l = sizeof(newbc->dad);
-               strncpy(ast->exten,ext,sizeof(ast->exten));
-
-               strncpy(newbc->dad,ext,l);
-
-               newbc->dad[l-1] = 0;
+               ast_copy_string(ast->exten, ext, sizeof(ast->exten));
+               ast_copy_string(newbc->dad, ext, sizeof(newbc->dad));
        }
 
-       if (ast->cid.cid_rdnis)  
-               strcpy(newbc->rad, ast->cid.cid_rdnis);
+       if (!ast_strlen_zero(ast->cid.cid_rdnis))
+               ast_copy_string(newbc->rad, ast->cid.cid_rdnis, sizeof(newbc->rad));
        else 
-               newbc->rad[0]=0;
+               newbc->rad = "";
 
-       chan_misdn_log(3, port, " --> * adding2newbc callerid %s\n",ast->cid.cid_num);
-       if (ast_strlen_zero(newbc->oad) && ast->cid.cid_num ) {
+       chan_misdn_log(3, port, " --> * adding2newbc callerid %s\n", ast->cid.cid_num);
+       if (ast_strlen_zero(newbc->oad) && !ast_strlen_zero(ast->cid.cid_num)) {
+               ast_copy_string(newbc->oad, ast->cid.cid_num, sizeof(newbc->oad));
+       }
 
-               if (ast->cid.cid_num) {
-                       int l = sizeof(newbc->oad);
-                       strncpy(newbc->oad,ast->cid.cid_num, l);
-                       newbc->oad[l-1] = 0;
-               }
+       newbc->capability = ast->transfercapability;
+       pbx_builtin_setvar_helper(ast, "TRANSFERCAPABILITY", ast_transfercapability2str(newbc->capability));
+       if ( ast->transfercapability == INFO_CAPABILITY_DIGITAL_UNRESTRICTED) {
+               chan_misdn_log(2, port, " --> * Call with flag Digital\n");
        }
 
-       {
-               struct chan_list *ch=MISDN_ASTERISK_TECH_PVT(ast);
-               if (!ch) { ast_verbose("No chan_list in misdn_call\n"); return -1;}
-               
-               newbc->capability=ast->transfercapability;
-               pbx_builtin_setvar_helper(ast,"TRANSFERCAPABILITY",ast_transfercapability2str(newbc->capability));
-               if ( ast->transfercapability == INFO_CAPABILITY_DIGITAL_UNRESTRICTED) {
-                       chan_misdn_log(2, port, " --> * Call with flag Digital\n");
-               }
+       /* update screening and presentation */ 
+       update_config(ch, ORG_AST);
                
+       /* fill in some ies from channel vary*/
+       import_ch(ast, newbc, ch);
 
-               /* update screening and presentation */ 
-               update_config(ch,ORG_AST);
-               
-               /* fill in some ies from channel vary*/
-               import_ch(ast, newbc, ch);
-               
-               /* Finally The Options Override Everything */
-               if (opts)
-                       misdn_set_opt_exec(ast,opts);
-               else
-                       chan_misdn_log(2,port,"NO OPTS GIVEN\n");
+       /* Finally The Options Override Everything */
+       if (opts)
+               misdn_set_opt_exec(ast, opts);
+       else
+               chan_misdn_log(2, port, "NO OPTS GIVEN\n");
 
-               /*check for bridging*/
-               int bridging;
-               misdn_cfg_get( 0, MISDN_GEN_BRIDGING, &bridging, sizeof(int));
-               if (bridging && ch->other_ch) {
+       /*check for bridging*/
+       misdn_cfg_get(0, MISDN_GEN_BRIDGING, &bridging, sizeof(bridging));
+       if (bridging && ch->other_ch) {
 #ifdef MISDN_1_2
-                       chan_misdn_log(1, port, "Disabling EC (aka Pipeline) on both Sides\n");
-                       *ch->bc->pipeline=0;
-                       *ch->other_ch->bc->pipeline=0;
+               chan_misdn_log(1, port, "Disabling EC (aka Pipeline) on both Sides\n");
+               *ch->bc->pipeline = 0;
+               *ch->other_ch->bc->pipeline = 0;
 #else
-                       chan_misdn_log(1, port, "Disabling EC on both Sides\n");
-                       ch->bc->ec_enable=0;
-                       ch->other_ch->bc->ec_enable=0;
+               chan_misdn_log(1, port, "Disabling EC on both Sides\n");
+               ch->bc->ec_enable = 0;
+               ch->other_ch->bc->ec_enable = 0;
 #endif
-               }
-               
-               r=misdn_lib_send_event( newbc, EVENT_SETUP );
-               
-               /** we should have l3id after sending setup **/
-               ch->l3id=newbc->l3_id;
        }
-       
+
+       r = misdn_lib_send_event( newbc, EVENT_SETUP );
+
+       /** we should have l3id after sending setup **/
+       ch->l3id = newbc->l3_id;
+
        if ( r == -ENOCHAN  ) {
                chan_misdn_log(0, port, " --> * Theres no Channel at the moment .. !\n");
-               chan_misdn_log(1, port, " --> * SEND: State Down pid:%d\n",newbc?newbc->pid:-1);
-               ast->hangupcause=34;
+               chan_misdn_log(1, port, " --> * SEND: State Down pid:%d\n", newbc ? newbc->pid : -1);
+               ast->hangupcause = AST_CAUSE_NORMAL_CIRCUIT_CONGESTION;
                ast_setstate(ast, AST_STATE_DOWN);
                return -1;
        }
        
-       chan_misdn_log(2, port, " --> * SEND: State Dialing pid:%d\n",newbc?newbc->pid:1);
+       chan_misdn_log(2, port, " --> * SEND: State Dialing pid:%d\n", newbc ? newbc->pid : 1);
 
        ast_setstate(ast, AST_STATE_DIALING);
-       ast->hangupcause=16;
+       ast->hangupcause = AST_CAUSE_NORMAL_CLEARING;
        
-       if (newbc->nt) stop_bc_tones(ch);
+       if (newbc->nt)
+               stop_bc_tones(ch);
 
-       ch->state=MISDN_CALLING;
+       ch->state = MISDN_CALLING;
        
        return 0; 
 }
@@ -2107,11 +2045,11 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
 static int misdn_answer(struct ast_channel *ast)
 {
        struct chan_list *p;
+       const char *tmp;
 
+       if (!ast || ! (p = MISDN_ASTERISK_TECH_PVT(ast)) ) return -1;
        
-       if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast)) ) return -1;
-       
-       chan_misdn_log(1, p? (p->bc? p->bc->port : 0) : 0, "* ANSWER:\n");
+       chan_misdn_log(1, p ? (p->bc ? p->bc->port : 0) : 0, "* ANSWER:\n");
        
        if (!p) {
                ast_log(LOG_WARNING, " --> Channel not connected ??\n");
@@ -2124,43 +2062,36 @@ static int misdn_answer(struct ast_channel *ast)
                ast_queue_hangup(ast);
        }
 
-       {
-               const char *tmp_key = pbx_builtin_getvar_helper(p->ast, "CRYPT_KEY");
-               
-               if (tmp_key ) {
-                       chan_misdn_log(1, p->bc->port, " --> Connection will be BF crypted\n");
-                       {
-                               int l = sizeof(p->bc->crypt_key);
-                               strncpy(p->bc->crypt_key,tmp_key, l);
-                               p->bc->crypt_key[l-1] = 0;
-                       }
-               } else {
-                       chan_misdn_log(3, p->bc->port, " --> Connection is without BF encryption\n");
-               }
-    
+       tmp = pbx_builtin_getvar_helper(p->ast, "CRYPT_KEY");
+
+       if (!ast_strlen_zero(tmp)) {
+               chan_misdn_log(1, p->bc->port, " --> Connection will be BF crypted\n");
+               ast_copy_string(p->bc->crypt_key, tmp, sizeof(p->bc->crypt_key));
+       } else {
+               chan_misdn_log(3, p->bc->port, " --> Connection is without BF encryption\n");
        }
 
        {
-               const char *nodsp=pbx_builtin_getvar_helper(ast, "MISDN_DIGITAL_TRANS");
-               if (nodsp) {
-                       chan_misdn_log(1, p->bc->port, " --> Connection is transparent digital\n");
-                       p->bc->nodsp=1;
-                       p->bc->hdlc=0;
-                       p->bc->nojitter=1;
-               }
+
+       tmp = pbx_builtin_getvar_helper(ast, "MISDN_DIGITAL_TRANS");
+       if (!ast_strlen_zero(tmp) && ast_true(tmp)) {
+               chan_misdn_log(1, p->bc->port, " --> Connection is transparent digital\n");
+               p->bc->nodsp = 1;
+               p->bc->hdlc = 0;
+               p->bc->nojitter = 1;
        }
-       
+
        p->state = MISDN_CONNECTED;
        stop_indicate(p);
 
        if ( ast_strlen_zero(p->bc->cad) ) {
                chan_misdn_log(2,p->bc->port," --> empty cad using dad\n");
-               ast_copy_string(p->bc->cad,p->bc->dad,sizeof(p->bc->cad));
+               ast_copy_string(p->bc->cad, p->bc->dad, sizeof(p->bc->cad));
        }
 
        misdn_lib_send_event( p->bc, EVENT_CONNECT);
        start_bc_tones(p);
-       
+
        return 0;
 }
 
@@ -2173,11 +2104,13 @@ static int misdn_digit_begin(struct ast_channel *chan, char digit)
 static int misdn_digit_end(struct ast_channel *ast, char digit, unsigned int duration)
 {
        struct chan_list *p;
+       struct misdn_bchannel *bc;
+       char buf[2] = { digit, 0 };
        
        if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast))) return -1;
 
-       struct misdn_bchannel *bc=p->bc;
-       chan_misdn_log(1, bc?bc->port:0, "* IND : Digit %c\n",digit);
+       bc = p->bc;
+       chan_misdn_log(1, bc ? bc->port : 0, "* IND : Digit %c\n", digit);
        
        if (!bc) {
                ast_log(LOG_WARNING, " --> !! Got Digit Event withut having bchannel Object\n");
@@ -2185,45 +2118,24 @@ static int misdn_digit_end(struct ast_channel *ast, char digit, unsigned int dur
        }
        
        switch (p->state ) {
-               case MISDN_CALLING:
-               {
-                       
-                       char buf[8];
-                       buf[0]=digit;
-                       buf[1]=0;
-                       
-                       int l = sizeof(bc->infos_pending);
-                       strncat(bc->infos_pending,buf,l);
-                       bc->infos_pending[l-1] = 0;
-               }
+       case MISDN_CALLING:
+               if (strlen(bc->infos_pending) < sizeof(bc->infos_pending) - 1)
+                       strncat(bc->infos_pending, buf, sizeof(bc->infos_pending) - 1);
                break;
-               case MISDN_CALLING_ACKNOWLEDGE:
-               {
-                       bc->info_dad[0]=digit;
-                       bc->info_dad[1]=0;
-                       
-                       {
-                               int l = sizeof(bc->dad);
-                               strncat(bc->dad,bc->info_dad, l - strlen(bc->dad));
-                               bc->dad[l-1] = 0;
-               }
-                       {
-                               int l = sizeof(p->ast->exten);
-                               strncpy(p->ast->exten, bc->dad, l);
-                               p->ast->exten[l-1] = 0;
-                       }
-                       
-                       misdn_lib_send_event( bc, EVENT_INFORMATION);
-               }
+       case MISDN_CALLING_ACKNOWLEDGE:
+               ast_copy_string(bc->info_dad, buf, sizeof(bc->info_dad));
+               if (strlen(bc->dad) < sizeof(bc->dad) - 1)
+                       strncat(bc->dad, buf, sizeof(bc->dad) - 1);
+               ast_copy_string(p->ast->exten, bc->dad, sizeof(p->ast->exten));
+               misdn_lib_send_event( bc, EVENT_INFORMATION);
                break;
-               
-               default:
-                       if ( bc->send_dtmf ) {
-                               send_digit_to_chan(p,digit);
-                       }
+       default:
+               if (bc->send_dtmf) {
+                       send_digit_to_chan(p, digit);
+               }
                break;
        }
-       
+
        return 0;
 }
 
@@ -2231,13 +2143,13 @@ static int misdn_digit_end(struct ast_channel *ast, char digit, unsigned int dur
 static int misdn_fixup(struct ast_channel *oldast, struct ast_channel *ast)
 {
        struct chan_list *p;
-       
+
        if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast) )) return -1;
-       
-       chan_misdn_log(1, p->bc?p->bc->port:0, "* IND: Got Fixup State:%s L3id:%x\n", misdn_get_ch_state(p), p->l3id);
-       
-       p->ast = ast ;
-  
+
+       chan_misdn_log(1, p->bc ? p->bc->port : 0, "* IND: Got Fixup State:%s L3id:%x\n", misdn_get_ch_state(p), p->l3id);
+
+       p->ast = ast;
+
        return 0;
 }
 
@@ -2247,26 +2159,25 @@ static int misdn_indication(struct ast_channel *ast, int cond, const void *data,
 {
        struct chan_list *p;
 
-  
        if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast))) {
-               ast_log(LOG_WARNING, "Returnded -1 in misdn_indication\n");
+               ast_log(LOG_WARNING, "Returned -1 in misdn_indication\n");
                return -1;
        }
        
        if (!p->bc ) {
-               chan_misdn_log(1, 0, "* IND : Indication from %s\n",ast->exten);
+               chan_misdn_log(1, 0, "* IND : Indication from %s\n", ast->exten);
                ast_log(LOG_WARNING, "Private Pointer but no bc ?\n");
                return -1;
        }
        
-       chan_misdn_log(5, p->bc->port, "* IND : Indication [%d] from %s\n",cond, ast->exten);
+       chan_misdn_log(5, p->bc->port, "* IND : Indication [%d] from %s\n", cond, ast->exten);
        
        switch (cond) {
        case AST_CONTROL_BUSY:
-               chan_misdn_log(1, p->bc->port, "* IND :\tbusy pid:%d\n",p->bc?p->bc->pid:-1);
-               ast_setstate(ast,AST_STATE_BUSY);
+               chan_misdn_log(1, p->bc->port, "* IND :\tbusy pid:%d\n", p->bc ? p->bc->pid : -1);
+               ast_setstate(ast, AST_STATE_BUSY);
 
-               p->bc->out_cause=17;
+               p->bc->out_cause = AST_CAUSE_USER_BUSY;
                if (p->state != MISDN_CONNECTED) {
                        start_bc_tones(p);
                        misdn_lib_send_event( p->bc, EVENT_DISCONNECT);
@@ -2274,75 +2185,69 @@ static int misdn_indication(struct ast_channel *ast, int cond, const void *data,
                        chan_misdn_log(-1, p->bc->port, " --> !! Got Busy in Connected State !?! ast:%s\n", ast->name);
                }
                return -1;
-               break;
        case AST_CONTROL_RING:
-               chan_misdn_log(1, p->bc->port, "* IND :\tring pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, "* IND :\tring pid:%d\n", p->bc ? p->bc->pid : -1);
                return -1;
-               break;
-               
        case AST_CONTROL_RINGING:
-               chan_misdn_log(1, p->bc->port, "* IND :\tringing pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, "* IND :\tringing pid:%d\n", p->bc ? p->bc->pid : -1);
                switch (p->state) {
-                       case MISDN_ALERTING:
-                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but I was Ringing before, so ignoreing it\n",p->bc?p->bc->pid:-1);
-                               break;
-                       case MISDN_CONNECTED:
-                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but Connected, so just send TONE_ALERTING without state changes \n",p->bc?p->bc->pid:-1);
-                               return -1;
-                               break;
-                       default:
-                               p->state=MISDN_ALERTING;
-                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d\n",p->bc?p->bc->pid:-1);
-                               misdn_lib_send_event( p->bc, EVENT_ALERTING);
+               case MISDN_ALERTING:
+                       chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but I was Ringing before, so ignoreing it\n", p->bc ? p->bc->pid : -1);
+                       break;
+               case MISDN_CONNECTED:
+                       chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but Connected, so just send TONE_ALERTING without state changes \n", p->bc ? p->bc->pid : -1);
+                       return -1;
+               default:
+                       p->state = MISDN_ALERTING;
+                       chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d\n", p->bc ? p->bc->pid : -1);
+                       misdn_lib_send_event( p->bc, EVENT_ALERTING);
                        
-                               if (p->other_ch && p->other_ch->bc) {
-                                       if (misdn_inband_avail(p->other_ch->bc)) {
-                                               chan_misdn_log(2,p->bc->port, " --> other End is mISDN and has inband info available\n");
-                                               break;
-                                       }
+                       if (p->other_ch && p->other_ch->bc) {
+                               if (misdn_inband_avail(p->other_ch->bc)) {
+                                       chan_misdn_log(2, p->bc->port, " --> other End is mISDN and has inband info available\n");
+                                       break;
+                               }
 
-                                       if (!p->other_ch->bc->nt) {
-                                               chan_misdn_log(2,p->bc->port, " --> other End is mISDN TE so it has inband info for sure (?)\n");
-                                               break;
-                                       }
+                               if (!p->other_ch->bc->nt) {
+                                       chan_misdn_log(2, p->bc->port, " --> other End is mISDN TE so it has inband info for sure (?)\n");
+                                       break;
                                }
+                       }
 
-                               chan_misdn_log(3, p->bc->port, " --> * SEND: State Ring pid:%d\n",p->bc?p->bc->pid:-1);
-                               ast_setstate(ast,AST_STATE_RINGING);
+                       chan_misdn_log(3, p->bc->port, " --> * SEND: State Ring pid:%d\n", p->bc ? p->bc->pid : -1);
+                       ast_setstate(ast, AST_STATE_RINGING);
                        
-                               if ( !p->bc->nt && (p->originator==ORG_MISDN) && !p->incoming_early_audio ) 
-                                       chan_misdn_log(2,p->bc->port, " --> incoming_early_audio off\n");
-                               else 
-                                       return -1;
+                       if ( !p->bc->nt && (p->originator == ORG_MISDN) && !p->incoming_early_audio ) 
+                               chan_misdn_log(2, p->bc->port, " --> incoming_early_audio off\n");
+                       else 
+                               return -1;
                }
                break;
        case AST_CONTROL_ANSWER:
-               chan_misdn_log(1, p->bc->port, " --> * IND :\tanswer pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> * IND :\tanswer pid:%d\n", p->bc ? p->bc->pid : -1);
                start_bc_tones(p);
                break;
        case AST_CONTROL_TAKEOFFHOOK:
-               chan_misdn_log(1, p->bc->port, " --> *\ttakeoffhook pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> *\ttakeoffhook pid:%d\n", p->bc ? p->bc->pid : -1);
                return -1;
-               break;
        case AST_CONTROL_OFFHOOK:
-               chan_misdn_log(1, p->bc->port, " --> *\toffhook pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> *\toffhook pid:%d\n", p->bc ? p->bc->pid : -1);
                return -1;
-               break; 
        case AST_CONTROL_FLASH:
-               chan_misdn_log(1, p->bc->port, " --> *\tflash pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> *\tflash pid:%d\n", p->bc ? p->bc->pid : -1);
                break;
        case AST_CONTROL_PROGRESS:
-               chan_misdn_log(1, p->bc->port, " --> * IND :\tprogress pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> * IND :\tprogress pid:%d\n", p->bc ? p->bc->pid : -1);
                misdn_lib_send_event( p->bc, EVENT_PROGRESS);
                break;
        case AST_CONTROL_PROCEEDING:
-               chan_misdn_log(1, p->bc->port, " --> * IND :\tproceeding pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> * IND :\tproceeding pid:%d\n", p->bc ? p->bc->pid : -1);
                misdn_lib_send_event( p->bc, EVENT_PROCEEDING);
                break;
        case AST_CONTROL_CONGESTION:
-               chan_misdn_log(1, p->bc->port, " --> * IND :\tcongestion pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> * IND :\tcongestion pid:%d\n", p->bc ? p->bc->pid : -1);
 
-               p->bc->out_cause=42;
+               p->bc->out_cause = AST_CAUSE_SWITCH_CONGESTION;
                start_bc_tones(p);
                misdn_lib_send_event( p->bc, EVENT_DISCONNECT);
 
@@ -2351,23 +2256,21 @@ static int misdn_indication(struct ast_channel *ast, int cond, const void *data,
                }
                break;
        case -1 :
-               chan_misdn_log(1, p->bc->port, " --> * IND :\t-1! (stop indication) pid:%d\n",p->bc?p->bc->pid:-1);
-               
+               chan_misdn_log(1, p->bc->port, " --> * IND :\t-1! (stop indication) pid:%d\n", p->bc ? p->bc->pid : -1);
+
                stop_indicate(p);
 
                if (p->state == MISDN_CONNECTED) 
                        start_bc_tones(p);
-
                break;
-
        case AST_CONTROL_HOLD:
-               chan_misdn_log(1, p->bc->port, " --> *\tHOLD pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> *\tHOLD pid:%d\n", p->bc ? p->bc->pid : -1);
                break;
        case AST_CONTROL_UNHOLD:
-               chan_misdn_log(1, p->bc->port, " --> *\tUNHOLD pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> *\tUNHOLD pid:%d\n", p->bc ? p->bc->pid : -1);
                break;
        default:
-               chan_misdn_log(1, p->bc->port, " --> * Unknown Indication:%d pid:%d\n",cond,p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, " --> * Unknown Indication:%d pid:%d\n", cond, p->bc ? p->bc->pid : -1);
        }
   
        return 0;
@@ -2376,22 +2279,23 @@ static int misdn_indication(struct ast_channel *ast, int cond, const void *data,
 static int misdn_hangup(struct ast_channel *ast)
 {
        struct chan_list *p;
-       struct misdn_bchannel *bc=NULL;
+       struct misdn_bchannel *bc = NULL;
+       const char *varcause = NULL;
 
        if (option_debug)
                ast_log(LOG_DEBUG, "misdn_hangup(%s)\n", ast->name);
-       
+
        if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast) ) ) return -1;
-       
+
        if (!p) {
                chan_misdn_log(3, 0, "misdn_hangup called, without chan_list obj.\n");
                return 0 ;
        }
-       
-       bc=p->bc;
 
-       MISDN_ASTERISK_TECH_PVT(ast)=NULL;
-       p->ast=NULL;
+       bc = p->bc;
+
+       MISDN_ASTERISK_TECH_PVT(ast) = NULL;
+       p->ast = NULL;
 
        if (ast->_state == AST_STATE_RESERVED || 
                p->state == MISDN_NOTHING || 
@@ -2402,12 +2306,12 @@ static int misdn_hangup(struct ast_channel *ast)
                /* between request and call */
                if (option_debug)
                        ast_log(LOG_DEBUG, "State Reserved (or nothing) => chanIsAvail\n");
-               MISDN_ASTERISK_TECH_PVT(ast)=NULL;
+               MISDN_ASTERISK_TECH_PVT(ast) = NULL;
                
                cl_dequeue_chan(&cl_te, p);
                close(p->pipe[0]);
                close(p->pipe[1]);
-               free(p);
+               ast_free(p);
                
                if (bc)
                        misdn_lib_release(bc);
@@ -2416,122 +2320,116 @@ static int misdn_hangup(struct ast_channel *ast)
        }
 
        if (!bc) {
-               ast_log(LOG_WARNING,"Hangup with private but no bc ? state:%s l3id:%x\n", misdn_get_ch_state(p), p->l3id);
+               ast_log(LOG_WARNING, "Hangup with private but no bc ? state:%s l3id:%x\n", misdn_get_ch_state(p), p->l3id);
                goto CLEAN_CH;
        }
 
 
-       p->need_hangup=0;
-       p->need_queue_hangup=0;
-       p->need_busy=0;
+       p->need_hangup = 0;
+       p->need_queue_hangup = 0;
+       p->need_busy = 0;
 
 
        if (!p->bc->nt) 
                stop_bc_tones(p);
 
-       
-       {
-               const char *varcause=NULL;
-               bc->out_cause=ast->hangupcause?ast->hangupcause:16;
+       bc->out_cause = ast->hangupcause ? ast->hangupcause : AST_CAUSE_NORMAL_CLEARING;
                
-               if ( (varcause=pbx_builtin_getvar_helper(ast, "HANGUPCAUSE")) ||
-                    (varcause=pbx_builtin_getvar_helper(ast, "PRI_CAUSE"))) {
-                       int tmpcause=atoi(varcause);
-                       bc->out_cause=tmpcause?tmpcause:16;
-               }
+       if ( (varcause = pbx_builtin_getvar_helper(ast, "HANGUPCAUSE")) ||
+            (varcause = pbx_builtin_getvar_helper(ast, "PRI_CAUSE"))) {
+               int tmpcause = atoi(varcause);
+               bc->out_cause = tmpcause ? tmpcause : AST_CAUSE_NORMAL_CLEARING;
+       }
     
-               chan_misdn_log(1, bc->port, "* IND : HANGUP\tpid:%d ctx:%s dad:%s oad:%s State:%s\n",p->bc?p->bc->pid:-1, ast->context, ast->exten, ast->cid.cid_num, misdn_get_ch_state(p));
-               chan_misdn_log(3, bc->port, " --> l3id:%x\n",p->l3id);
-               chan_misdn_log(3, bc->port, " --> cause:%d\n",bc->cause);
-               chan_misdn_log(2, bc->port, " --> out_cause:%d\n",bc->out_cause);
-               chan_misdn_log(2, bc->port, " --> state:%s\n", misdn_get_ch_state(p));
-               
-               switch (p->state) {
-               case MISDN_INCOMING_SETUP:
-               case MISDN_CALLING:
-                       p->state=MISDN_CLEANING;
-                       misdn_lib_send_event( bc, EVENT_RELEASE_COMPLETE);
-                       break;
-               case MISDN_HOLDED:
-               case MISDN_DIALING:
-                       start_bc_tones(p);
-                       hanguptone_indicate(p);
+       chan_misdn_log(1, bc->port, "* IND : HANGUP\tpid:%d ctx:%s dad:%s oad:%s State:%s\n", p->bc ? p->bc->pid : -1, ast->context, ast->exten, ast->cid.cid_num, misdn_get_ch_state(p));
+       chan_misdn_log(3, bc->port, " --> l3id:%x\n", p->l3id);
+       chan_misdn_log(3, bc->port, " --> cause:%d\n", bc->cause);
+       chan_misdn_log(2, bc->port, " --> out_cause:%d\n", bc->out_cause);
+       chan_misdn_log(2, bc->port, " --> state:%s\n", misdn_get_ch_state(p));
+
+       switch (p->state) {
+       case MISDN_INCOMING_SETUP:
+       case MISDN_CALLING:
+               p->state = MISDN_CLEANING;
+               misdn_lib_send_event( bc, EVENT_RELEASE_COMPLETE);
+               break;
+       case MISDN_HOLDED:
+       case MISDN_DIALING:
+               start_bc_tones(p);
+               hanguptone_indicate(p);
                
-                       if (bc->need_disconnect)
-                               misdn_lib_send_event( bc, EVENT_DISCONNECT);
-                       break;
+               if (bc->need_disconnect)
+                       misdn_lib_send_event( bc, EVENT_DISCONNECT);
+               break;
 
-               case MISDN_CALLING_ACKNOWLEDGE:
-                       start_bc_tones(p);
-                       hanguptone_indicate(p);
+       case MISDN_CALLING_ACKNOWLEDGE:
+               start_bc_tones(p);
+               hanguptone_indicate(p);
                
-                       if (bc->need_disconnect)
-                               misdn_lib_send_event( bc, EVENT_DISCONNECT);
-                       break;
+               if (bc->need_disconnect)
+                       misdn_lib_send_event( bc, EVENT_DISCONNECT);
+               break;
       
-               case MISDN_ALERTING:
-               case MISDN_PROGRESS:
-               case MISDN_PROCEEDING:
-                       if (p->originator != ORG_AST) 
-                               hanguptone_indicate(p);
+       case MISDN_ALERTING:
+       case MISDN_PROGRESS:
+       case MISDN_PROCEEDING:
+               if (p->originator != ORG_AST) 
+                       hanguptone_indicate(p);
       
-                       /*p->state=MISDN_CLEANING;*/
-                       if (bc->need_disconnect)
-                               misdn_lib_send_event( bc, EVENT_DISCONNECT);
-                       break;
-               case MISDN_CONNECTED:
-               case MISDN_PRECONNECTED:
-                       /*  Alerting or Disconect */
-                       if (p->bc->nt) {
-                               start_bc_tones(p);
-                               hanguptone_indicate(p);
-                               p->bc->progress_indicator=8;
-                       }
-                       if (bc->need_disconnect)
-                               misdn_lib_send_event( bc, EVENT_DISCONNECT);
+               /*p->state=MISDN_CLEANING;*/
+               if (bc->need_disconnect)
+                       misdn_lib_send_event( bc, EVENT_DISCONNECT);
+               break;
+       case MISDN_CONNECTED:
+       case MISDN_PRECONNECTED:
+               /*  Alerting or Disconect */
+               if (p->bc->nt) {
+                       start_bc_tones(p);
+                       hanguptone_indicate(p);
+                       p->bc->progress_indicator = 8;
+               }
+               if (bc->need_disconnect)
+                       misdn_lib_send_event( bc, EVENT_DISCONNECT);
 
-                       /*p->state=MISDN_CLEANING;*/
-                       break;
-               case MISDN_DISCONNECTED:
-                       misdn_lib_send_event( bc, EVENT_RELEASE);
-                       p->state=MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
-                       break;
+               /*p->state=MISDN_CLEANING;*/
+               break;
+       case MISDN_DISCONNECTED:
+               misdn_lib_send_event( bc, EVENT_RELEASE);
+               p->state = MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
+               break;
 
-               case MISDN_RELEASED:
-               case MISDN_CLEANING:
-                       p->state=MISDN_CLEANING;
-                       break;
+       case MISDN_RELEASED:
+       case MISDN_CLEANING:
+               p->state = MISDN_CLEANING;
+               break;
 
-               case MISDN_BUSY:
-                       break;
+       case MISDN_BUSY:
+               break;
       
-               case MISDN_HOLD_DISCONNECT:
-                       /* need to send release here */
-                       chan_misdn_log(1, bc->port, " --> cause %d\n",bc->cause);
-                       chan_misdn_log(1, bc->port, " --> out_cause %d\n",bc->out_cause);
-                       
-                       bc->out_cause=-1;
-                       misdn_lib_send_event(bc,EVENT_RELEASE);
-                       p->state=MISDN_CLEANING;
-                       break;
-               default:
-                       if (bc->nt) {
-                               bc->out_cause=-1;
-                               misdn_lib_send_event(bc, EVENT_RELEASE);
-                               p->state=MISDN_CLEANING; 
-                       } else {
-                               if (bc->need_disconnect)
-                                       misdn_lib_send_event(bc, EVENT_DISCONNECT);
-                       }
+       case MISDN_HOLD_DISCONNECT:
+               /* need to send release here */
+               chan_misdn_log(1, bc->port, " --> cause %d\n", bc->cause);
+               chan_misdn_log(1, bc->port, " --> out_cause %d\n", bc->out_cause);
+
+               bc->out_cause = -1;
+               misdn_lib_send_event(bc, EVENT_RELEASE);
+               p->state = MISDN_CLEANING;
+               break;
+       default:
+               if (bc->nt) {
+                       bc->out_cause = -1;
+                       misdn_lib_send_event(bc, EVENT_RELEASE);
+                       p->state = MISDN_CLEANING; 
+               } else {
+                       if (bc->need_disconnect)
+                               misdn_lib_send_event(bc, EVENT_DISCONNECT);
                }
+       }
 
-               p->state=MISDN_CLEANING;
+       p->state = MISDN_CLEANING;
     
-       }
-       
+       chan_misdn_log(3, bc->port, " --> Channel: %s hanguped new state:%s\n", ast->name, misdn_get_ch_state(p));
 
-       chan_misdn_log(3, bc->port, " --> Channel: %s hanguped new state:%s\n",ast->name,misdn_get_ch_state(p));
-       
        return 0;
 }
 
@@ -2548,7 +2446,6 @@ static struct ast_frame *process_ast_dsp(struct chan_list *tmp, struct ast_frame
                return NULL;
        }
 
        if (!f || (f->frametype != AST_FRAME_DTMF))
                return frame;
  
@@ -2611,40 +2508,40 @@ static struct ast_frame *process_ast_dsp(struct chan_list *tmp, struct ast_frame
 }
 
 
-static struct ast_frame  *misdn_read(struct ast_channel *ast)
+static struct ast_frame *misdn_read(struct ast_channel *ast)
 {
        struct chan_list *tmp;
        int len;
        
        if (!ast) {
-               chan_misdn_log(1,0,"misdn_read called without ast\n");
+               chan_misdn_log(1, 0, "misdn_read called without ast\n");
                return NULL;
        }
-       if (!(tmp=MISDN_ASTERISK_TECH_PVT(ast))) {
-               chan_misdn_log(1,0,"misdn_read called without ast->pvt\n");
+       if (!(tmp = MISDN_ASTERISK_TECH_PVT(ast))) {
+               chan_misdn_log(1, 0, "misdn_read called without ast->pvt\n");
                return NULL;
        }
 
-       if (!tmp->bc && !(tmp->state==MISDN_HOLDED)) {
-               chan_misdn_log(1,0,"misdn_read called without bc\n");
+       if (!tmp->bc && !(tmp->state == MISDN_HOLDED)) {
+               chan_misdn_log(1, 0, "misdn_read called without bc\n");
                return NULL;
        }
 
-       len=read(tmp->pipe[0],tmp->ast_rd_buf,sizeof(tmp->ast_rd_buf));
+       len = read(tmp->pipe[0], tmp->ast_rd_buf, sizeof(tmp->ast_rd_buf));
 
-       if (len<=0) {
+       if (len <= 0) {
                /* we hangup here, since our pipe is closed */
-               chan_misdn_log(2,tmp->bc->port,"misdn_read: Pipe closed, hanging up\n");
+               chan_misdn_log(2, tmp->bc->port, "misdn_read: Pipe closed, hanging up\n");
                return NULL;
        }
 
-       tmp->frame.frametype  = AST_FRAME_VOICE;
+       tmp->frame.frametype = AST_FRAME_VOICE;
        tmp->frame.subclass = AST_FORMAT_ALAW;
        tmp->frame.datalen = len;
        tmp->frame.samples = len;
        tmp->frame.mallocd = 0;
        tmp->frame.offset = 0;
-       tmp->frame.delivery= ast_tv(0,0) ;
+       tmp->frame.delivery = ast_tv(0,0);
        tmp->frame.src = NULL;
        tmp->frame.data = tmp->ast_rd_buf;
 
@@ -2652,22 +2549,22 @@ static struct ast_frame  *misdn_read(struct ast_channel *ast)
                if (tmp->faxdetect_timeout) {
                        if (ast_tvzero(tmp->faxdetect_tv)) {
                                tmp->faxdetect_tv = ast_tvnow();
-                               chan_misdn_log(2,tmp->bc->port,"faxdetect: starting detection with timeout: %ds ...\n", tmp->faxdetect_timeout);
+                               chan_misdn_log(2, tmp->bc->port, "faxdetect: starting detection with timeout: %ds ...\n", tmp->faxdetect_timeout);
                                return process_ast_dsp(tmp, &tmp->frame);
                        } else {
                                struct timeval tv_now = ast_tvnow();
                                int diff = ast_tvdiff_ms(tv_now, tmp->faxdetect_tv);
                                if (diff <= (tmp->faxdetect_timeout * 1000)) {
-                                       chan_misdn_log(5,tmp->bc->port,"faxdetect: detecting ...\n");
+                                       chan_misdn_log(5, tmp->bc->port, "faxdetect: detecting ...\n");
                                        return process_ast_dsp(tmp, &tmp->frame);
                                } else {
-                                       chan_misdn_log(2,tmp->bc->port,"faxdetect: stopping detection (time ran out) ...\n");
+                                       chan_misdn_log(2, tmp->bc->port, "faxdetect: stopping detection (time ran out) ...\n");
                                        tmp->faxdetect = 0;
                                        return &tmp->frame;
                                }
                        }
                } else {
-                       chan_misdn_log(5,tmp->bc->port,"faxdetect: detecting ... (no timeout)\n");
+                       chan_misdn_log(5, tmp->bc->port, "faxdetect: detecting ... (no timeout)\n");
                        return process_ast_dsp(tmp, &tmp->frame);
                }
        } else {
@@ -2684,7 +2581,7 @@ static int misdn_write(struct ast_channel *ast, struct ast_frame *frame)
        struct chan_list *ch;
        int i  = 0;
        
-       if (!ast || ! (ch=MISDN_ASTERISK_TECH_PVT(ast)) ) return -1;
+       if (!ast || ! (ch = MISDN_ASTERISK_TECH_PVT(ast)) ) return -1;
 
        if (ch->state == MISDN_HOLDED) {
                chan_misdn_log(7, 0, "misdn_write: Returning because holded\n");
@@ -2702,26 +2599,26 @@ static int misdn_write(struct ast_channel *ast, struct ast_frame *frame)
        }
 
 
-       if ( !frame->subclass) {
+       if (!frame->subclass) {
                chan_misdn_log(4, ch->bc->port, "misdn_write: * prods us\n");
                return 0;
        }
        
-       if ( !(frame->subclass & prefformat)) {
+       if (!(frame->subclass & prefformat)) {
                
                chan_misdn_log(-1, ch->bc->port, "Got Unsupported Frame with Format:%d\n", frame->subclass);
                return 0;
        }
        
 
-       if ( !frame->samples ) {
+       if (!frame->samples ) {
                chan_misdn_log(4, ch->bc->port, "misdn_write: zero write\n");
                
                if (!strcmp(frame->src,"ast_prod")) {
                        chan_misdn_log(1, ch->bc->port, "misdn_write: state (%s) prodded.\n", misdn_get_ch_state(ch));
 
                        if (ch->ts) {
-                               chan_misdn_log(4,ch->bc->port,"Starting Playtones\n");
+                               chan_misdn_log(4, ch->bc->port, "Starting Playtones\n");
                                misdn_lib_tone_generator_start(ch->bc);
                        }
                        return 0;
@@ -2737,40 +2634,39 @@ static int misdn_write(struct ast_channel *ast, struct ast_frame *frame)
        
 #ifdef MISDN_DEBUG
        {
-               int i, max=5>frame->samples?frame->samples:5;
-               
-               printf("write2mISDN %p %d bytes: ", p, frame->samples);
-               
-               for (i=0; i<  max ; i++) printf("%2.2x ",((char*) frame->data)[i]);
-               printf ("\n");
+               int i, max = 5 > frame->samples ? frame->samples : 5;
+
+               ast_log(LOG_DEBUG, "write2mISDN %p %d bytes: ", p, frame->samples);
+
+               for (i = 0; i < max ; i++)
+                       ast_log(LOG_DEBUG, "%2.2x ", ((char*) frame->data)[i]);
        }
 #endif
 
-
        switch (ch->bc->bc_state) {
-               case BCHAN_ACTIVATED:
-               case BCHAN_BRIDGED:
-                       break;
-               default:
+       case BCHAN_ACTIVATED:
+       case BCHAN_BRIDGED:
+               break;
+       default:
                if (!ch->dropped_frame_cnt)
-                       chan_misdn_log(5, ch->bc->port, "BC not active (nor bridged) droping: %d frames addr:%x exten:%s cid:%s ch->state:%s bc_state:%d l3id:%x\n",frame->samples,ch->bc->addr, ast->exten, ast->cid.cid_num,misdn_get_ch_state( ch), ch->bc->bc_state, ch->bc->l3_id);
+                       chan_misdn_log(5, ch->bc->port, "BC not active (nor bridged) droping: %d frames addr:%x exten:%s cid:%s ch->state:%s bc_state:%d l3id:%x\n", frame->samples, ch->bc->addr, ast->exten, ast->cid.cid_num, misdn_get_ch_state( ch), ch->bc->bc_state, ch->bc->l3_id);
                
                ch->dropped_frame_cnt++;
                if (ch->dropped_frame_cnt > 100) {
-                       ch->dropped_frame_cnt=0;
-                       chan_misdn_log(5, ch->bc->port, "BC not active (nor bridged) droping: %d frames addr:%x  dropped > 100 frames!\n",frame->samples,ch->bc->addr);
+                       ch->dropped_frame_cnt = 0;
+                       chan_misdn_log(5, ch->bc->port, "BC not active (nor bridged) droping: %d frames addr:%x  dropped > 100 frames!\n", frame->samples, ch->bc->addr);
 
                }
 
                return 0;
        }
 
-       chan_misdn_log(9, ch->bc->port, "Sending :%d bytes 2 MISDN\n",frame->samples);
+       chan_misdn_log(9, ch->bc->port, "Sending :%d bytes 2 MISDN\n", frame->samples);
        if ( !ch->bc->nojitter && misdn_cap_is_speech(ch->bc->capability) ) {
                /* Buffered Transmit (triggert by read from isdn side)*/
-               if (misdn_jb_fill(ch->jb,frame->data,frame->samples) < 0) {
+               if (misdn_jb_fill(ch->jb, frame->data, frame->samples) < 0) {
                        if (ch->bc->active)
-                               cb_log(0,ch->bc->port,"Misdn Jitterbuffer Overflow.\n");
+                               cb_log(0, ch->bc->port, "Misdn Jitterbuffer Overflow.\n");
                }
                
        } else {
@@ -2778,8 +2674,6 @@ static int misdn_write(struct ast_channel *ast, struct ast_frame *frame)
                i=misdn_lib_tx2misdn_frm(ch->bc, frame->data, frame->samples);
        }
 
-       
-       
        return 0;
 }
 
@@ -2793,79 +2687,77 @@ static enum ast_bridge_result  misdn_bridge (struct ast_channel *c0,
                                      int timeoutms)
 
 {
-       struct chan_list *ch1,*ch2;
+       struct chan_list *ch1, *ch2;
        struct ast_channel *carr[2], *who;
-       int to=-1;
+       int to = -1;
        struct ast_frame *f;
+       int p1_b, p2_b;
+       int bridging;
   
-       ch1=get_chan_by_ast(c0);
-       ch2=get_chan_by_ast(c1);
+       ch1 = get_chan_by_ast(c0);
+       ch2 = get_chan_by_ast(c1);
 
-       carr[0]=c0;
-       carr[1]=c1;
+       carr[0] = c0;
+       carr[1] = c1;
   
-       if (ch1 && ch2 ) ;
-       else
+       if (!(ch1 && ch2))
                return -1;
 
-       int p1_b, p2_b;
+       misdn_cfg_get(ch1->bc->port, MISDN_CFG_BRIDGING, &p1_b, sizeof(p1_b));
+       misdn_cfg_get(ch2->bc->port, MISDN_CFG_BRIDGING, &p2_b, sizeof(p2_b));
 
-       misdn_cfg_get(ch1->bc->port, MISDN_CFG_BRIDGING, &p1_b, sizeof(int));
-       misdn_cfg_get(ch2->bc->port, MISDN_CFG_BRIDGING, &p2_b, sizeof(int));
-       
-       if ( ! p1_b || ! p2_b) {
+       if (! p1_b || ! p2_b) {
                ast_log(LOG_NOTICE, "Falling back to Asterisk bridging\n");
                return AST_BRIDGE_FAILED;
        }
 
-       int bridging;
-       misdn_cfg_get( 0, MISDN_GEN_BRIDGING, &bridging, sizeof(int));
+       misdn_cfg_get(0, MISDN_GEN_BRIDGING, &bridging, sizeof(bridging));
        if (bridging) {
                /* trying to make a mISDN_dsp conference */
-               chan_misdn_log(1, ch1->bc->port, "I SEND: Making conference with Number:%d\n", ch1->bc->pid +1);
-               misdn_lib_bridge(ch1->bc,ch2->bc);
+               chan_misdn_log(1, ch1->bc->port, "I SEND: Making conference with Number:%d\n", ch1->bc->pid + 1);
+               misdn_lib_bridge(ch1->bc, ch2->bc);
        }
-       
+
        if (option_verbose > 2) 
                ast_verbose(VERBOSE_PREFIX_3 "Native bridging %s and %s\n", c0->name, c1->name);
 
        chan_misdn_log(1, ch1->bc->port, "* Making Native Bridge between %s and %s\n", ch1->bc->oad, ch2->bc->oad);
  
-       if (! (flags&AST_BRIDGE_DTMF_CHANNEL_0) )
-               ch1->ignore_dtmf=1;
+       if (! (flags & AST_BRIDGE_DTMF_CHANNEL_0) )
+               ch1->ignore_dtmf = 1;
 
-       if (! (flags&AST_BRIDGE_DTMF_CHANNEL_1) )
-               ch2->ignore_dtmf=1;
+       if (! (flags & AST_BRIDGE_DTMF_CHANNEL_1) )
+               ch2->ignore_dtmf = 1;
 
-       while(1) {
-               to=-1;
+       for (;/*ever*/;) {
+               to = -1;
                who = ast_waitfor_n(carr, 2, &to);
 
                if (!who) {
-                       ast_log(LOG_NOTICE,"misdn_bridge: empty read, breaking out\n");
+                       ast_log(LOG_NOTICE, "misdn_bridge: empty read, breaking out\n");
                        break;
                }
                f = ast_read(who);
-    
+
                if (!f || f->frametype == AST_FRAME_CONTROL) {
                        /* got hangup .. */
 
                        if (!f) 
-                               chan_misdn_log(4,ch1->bc->port,"Read Null Frame\n");
+                               chan_misdn_log(4, ch1->bc->port, "Read Null Frame\n");
                        else
-                               chan_misdn_log(4,ch1->bc->port,"Read Frame Controll class:%d\n",f->subclass);
-                       
-                       *fo=f;
-                       *rc=who;
-      
+                               chan_misdn_log(4, ch1->bc->port, "Read Frame Controll class:%d\n", f->subclass);
+
+                       *fo = f;
+                       *rc = who;
+
                        break;
                }
                
                if ( f->frametype == AST_FRAME_DTMF ) {
-                       chan_misdn_log(1,0,"Read DTMF %d from %s\n",f->subclass, who->exten);
+                       chan_misdn_log(1, 0, "Read DTMF %d from %s\n", f->subclass, who->exten);
 
-                       *fo=f;
-                       *rc=who;
+                       *fo = f;
+                       *rc = who;
                        break;
                }
        
@@ -2878,19 +2770,17 @@ static enum ast_bridge_result  misdn_bridge (struct ast_channel *c0,
 #endif
 
                if (who == c0) {
-                       ast_write(c1,f);
+                       ast_write(c1, f);
                }
                else {
-                       ast_write(c0,f);
+                       ast_write(c0, f);
                }
-    
        }
-       
-       chan_misdn_log(1, ch1->bc->port, "I SEND: Splitting conference with Number:%d\n", ch1->bc->pid +1);
-       
-       misdn_lib_split_bridge(ch1->bc,ch2->bc);
-       
-       
+
+       chan_misdn_log(1, ch1->bc->port, "I SEND: Splitting conference with Number:%d\n", ch1->bc->pid + 1);
+
+       misdn_lib_split_bridge(ch1->bc, ch2->bc);
+
        return AST_BRIDGE_COMPLETE;
 }
 
@@ -2898,31 +2788,31 @@ static enum ast_bridge_result  misdn_bridge (struct ast_channel *c0,
 
 static int dialtone_indicate(struct chan_list *cl)
 {
-       const struct ind_tone_zone_sound *ts= NULL;
-       struct ast_channel *ast=cl->ast;
+       const struct ind_tone_zone_sound *ts = NULL;
+       struct ast_channel *ast = cl->ast;
+       int nd = 0;
 
        if (!ast) {
-               chan_misdn_log(0,cl->bc->port,"No Ast in dialtone_indicate\n");
+               chan_misdn_log(0, cl->bc->port, "No Ast in dialtone_indicate\n");
                return -1;
        }
 
-       int nd=0;
-       misdn_cfg_get( cl->bc->port, MISDN_CFG_NODIALTONE, &nd, sizeof(nd));
+       misdn_cfg_get(cl->bc->port, MISDN_CFG_NODIALTONE, &nd, sizeof(nd));
 
        if (nd) {
-               chan_misdn_log(1,cl->bc->port,"Not sending Dialtone, because config wants it\n");
+               chan_misdn_log(1, cl->bc->port, "Not sending Dialtone, because config wants it\n");
                return 0;
        }
        
-       chan_misdn_log(3,cl->bc->port," --> Dial\n");
-       ts=ast_get_indication_tone(ast->zone,"dial");
-       cl->ts=ts;      
+       chan_misdn_log(3, cl->bc->port, " --> Dial\n");
+       ts = ast_get_indication_tone(ast->zone, "dial");
+       cl->ts = ts;    
        
        if (ts) {
-               cl->notxtone=0;
-               cl->norxtone=0;
+               cl->notxtone = 0;
+               cl->norxtone = 0;
                /* This prods us in misdn_write */
-               ast_playtones_start(ast,0, ts->data, 0);
+               ast_playtones_start(ast, 0, ts->data, 0);
        }
 
        return 0;
@@ -2930,26 +2820,26 @@ static int dialtone_indicate(struct chan_list *cl)
 
 static int hanguptone_indicate(struct chan_list *cl)
 {
-       misdn_lib_send_tone(cl->bc,TONE_HANGUP);
+       misdn_lib_send_tone(cl->bc, TONE_HANGUP);
        return 0;
 }
 
 static int stop_indicate(struct chan_list *cl)
 {
-       struct ast_channel *ast=cl->ast;
+       struct ast_channel *ast = cl->ast;
 
        if (!ast) {
-               chan_misdn_log(0,cl->bc->port,"No Ast in stop_indicate\n");
+               chan_misdn_log(0, cl->bc->port, "No Ast in stop_indicate\n");
                return -1;
        }
 
-       chan_misdn_log(3,cl->bc->port," --> None\n");
+       chan_misdn_log(3, cl->bc->port, " --> None\n");
        misdn_lib_tone_generator_stop(cl->bc);
        ast_playtones_stop(ast);
 
-       cl->ts=NULL;
+       cl->ts = NULL;
        /*ast_deactivate_generator(ast);*/
-       
+
        return 0;
 }
 
@@ -2957,8 +2847,8 @@ static int stop_indicate(struct chan_list *cl)
 static int start_bc_tones(struct chan_list* cl)
 {
        misdn_lib_tone_generator_stop(cl->bc);
-       cl->notxtone=0;
-       cl->norxtone=0;
+       cl->notxtone = 0;
+       cl->norxtone = 0;
        return 0;
 }
 
@@ -2966,8 +2856,8 @@ static int stop_bc_tones(struct chan_list *cl)
 {
        if (!cl) return -1;
 
-       cl->notxtone=1;
-       cl->norxtone=1;
+       cl->notxtone = 1;
+       cl->norxtone = 1;
        
        return 0;
 }
@@ -2975,85 +2865,77 @@ static int stop_bc_tones(struct chan_list *cl)
 
 static struct chan_list *init_chan_list(int orig)
 {
-       struct chan_list *cl=malloc(sizeof(struct chan_list));
-       
+       struct chan_list *cl;
+
+       cl = ast_calloc(1, sizeof(*cl));
+
        if (!cl) {
                chan_misdn_log(-1, 0, "misdn_request: malloc failed!");
                return NULL;
        }
        
-       memset(cl,0,sizeof(struct chan_list));
+       cl->originator = orig;
+       cl->need_queue_hangup = 1;
+       cl->need_hangup = 1;
+       cl->need_busy = 1;
+       cl->overlap_dial_task = -1;
 
-       cl->originator=orig;
-       cl->need_queue_hangup=1;
-       cl->need_hangup=1;
-       cl->need_busy=1;
-       cl->overlap_dial_task=-1;
-       
        return cl;
-       
 }
 
 static struct ast_channel *misdn_request(const char *type, int format, void *data, int *cause)
-
 {
        struct ast_channel *tmp = NULL;
-       char group[BUFFERSIZE+1]="";
+       char group[BUFFERSIZE + 1] = "";
        char buf[128];
-       char buf2[128], *ext=NULL, *port_str;
-       char *tokb=NULL, *p=NULL;
-       int channel=0, port=0;
+       char *buf2 = ast_strdupa(data), *ext = NULL, *port_str;
+       char *tokb = NULL, *p = NULL;
+       int channel = 0, port = 0;
        struct misdn_bchannel *newbc = NULL;
-       int dec=0;
-       
-       struct chan_list *cl=init_chan_list(ORG_AST);
-       
-       sprintf(buf,"%s/%s",misdn_type,(char*)data);
-       ast_copy_string(buf2,data, 128);
-       
-       port_str=strtok_r(buf2,"/", &tokb);
+       int dec = 0;
+
+       struct chan_list *cl = init_chan_list(ORG_AST);
+
+       snprintf(buf, sizeof(buf), "%s/%s", misdn_type, (char*)data);
 
-       ext=strtok_r(NULL,"/", &tokb);
+       port_str = strtok_r(buf2, "/", &tokb);
+
+       ext = strtok_r(NULL, "/", &tokb);
 
        if (port_str) {
-               if (port_str[0]=='g' && port_str[1]==':' ) {
+               if (port_str[0] == 'g' && port_str[1] == ':' ) {
                        /* We make a group call lets checkout which ports are in my group */
                        port_str += 2;
-                       strncpy(group, port_str, BUFFERSIZE);
-                       group[127] = 0;
-                       chan_misdn_log(2, 0, " --> Group Call group: %s\n",group);
-               } 
-               else if ((p = strchr(port_str, ':'))) {
+                       ast_copy_string(group, port_str, sizeof(group));
+                       chan_misdn_log(2, 0, " --> Group Call group: %s\n", group);
+               } else if ((p = strchr(port_str, ':'))) {
                        /* we have a preselected channel */
                        *p = 0;
                        channel = atoi(++p);
                        port = atoi(port_str);
                        chan_misdn_log(2, port, " --> Call on preselected Channel (%d).\n", channel);
-               }
-               else {
+               } else {
                        port = atoi(port_str);
                }
        } else {
-               ast_log(LOG_WARNING, " --> ! IND : CALL dad:%s WITHOUT PORT/Group, check extension.conf\n",ext);
+               ast_log(LOG_WARNING, " --> ! IND : CALL dad:%s WITHOUT PORT/Group, check extensions.conf\n", ext);
                return NULL;
        }
 
        if (misdn_cfg_is_group_method(group, METHOD_STANDARD_DEC)) {
                chan_misdn_log(4, port, " --> STARTING STANDARDDEC...\n");
-               dec=1;
+               dec = 1;
        }
 
        if (!ast_strlen_zero(group)) {
-       
-               char cfg_group[BUFFERSIZE+1];
+               char cfg_group[BUFFERSIZE + 1];
                struct robin_list *rr = NULL;
 
                if (misdn_cfg_is_group_method(group, METHOD_ROUND_ROBIN)) {
                        chan_misdn_log(4, port, " --> STARTING ROUND ROBIN...\n");
                        rr = get_robin_position(group);
                }
-               
-                       
+
                if (rr) {
                        int robin_channel = rr->channel;
                        int port_start;
@@ -3078,24 +2960,23 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
                                                next_chan = 0;
                                        }
 
-                                       misdn_cfg_get(port, MISDN_CFG_GROUPNAME, cfg_group, BUFFERSIZE);
-                                       
+                                       misdn_cfg_get(port, MISDN_CFG_GROUPNAME, cfg_group, sizeof(cfg_group));
+
                                        if (!strcasecmp(cfg_group, group)) {
                                                int port_up;
                                                int check;
-                                               misdn_cfg_get(port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(int));
+                                               misdn_cfg_get(port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(check));
                                                port_up = misdn_lib_port_up(port, check);
 
                                                if (check && !port_up) 
-                                                       chan_misdn_log(1,port,"L1 is not Up on this Port\n");
+                                                       chan_misdn_log(1, port, "L1 is not Up on this Port\n");
                                                
-                                               if (check && port_up<0) {
-                                                       ast_log(LOG_WARNING,"This port (%d) is blocked\n", port);
+                                               if (check && port_up < 0) {
+                                                       ast_log(LOG_WARNING, "This port (%d) is blocked\n", port);
                                                }
-                                               
-                                               
-                                               if ( port_up>0 )        {
-                                                       newbc = misdn_lib_get_free_bc(port, robin_channel,0, 0);
+
+                                               if (port_up > 0)        {
+                                                       newbc = misdn_lib_get_free_bc(port, robin_channel, 0, 0);
                                                        if (newbc) {
                                                                chan_misdn_log(4, port, " Success! Found port:%d channel:%d\n", newbc->port, newbc->channel);
                                                                if (port_up)
@@ -3110,21 +2991,21 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
                        } while (!newbc && robin_channel != rr->channel);
                        
                } else {                
-                       for (port=misdn_cfg_get_next_port(0); port > 0;
-                                port=misdn_cfg_get_next_port(port)) {
-                               
-                               misdn_cfg_get( port, MISDN_CFG_GROUPNAME, cfg_group, BUFFERSIZE);
+                       for (port = misdn_cfg_get_next_port(0); port > 0;
+                                port = misdn_cfg_get_next_port(port)) {
+
+                               misdn_cfg_get(port, MISDN_CFG_GROUPNAME, cfg_group, sizeof(cfg_group));
 
-                               chan_misdn_log(3,port, "Group [%s] Port [%d]\n", group, port);
+                               chan_misdn_log(3, port, "Group [%s] Port [%d]\n", group, port);
                                if (!strcasecmp(cfg_group, group)) {
                                        int port_up;
                                        int check;
-                                       misdn_cfg_get(port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(int));
+                                       misdn_cfg_get(port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(check));
                                        port_up = misdn_lib_port_up(port, check);
-                                       
+
                                        chan_misdn_log(4, port, "portup:%d\n", port_up);
-                                       
-                                       if ( port_up>0 ) {
+
+                                       if (port_up > 0) {
                                                newbc = misdn_lib_get_free_bc(port, 0, 0, dec);
                                                if (newbc)
                                                        break;
@@ -3144,21 +3025,21 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
                }
        } else { /* 'Normal' Port dial * Port dial */
                if (channel)
-                       chan_misdn_log(1, port," --> preselected_channel: %d\n",channel);
+                       chan_misdn_log(1, port, " --> preselected_channel: %d\n", channel);
                newbc = misdn_lib_get_free_bc(port, channel, 0, dec);
 
                if (!newbc) {
-                       ast_log(LOG_WARNING, "Could not create channel on port:%d with extensions:%s\n",port,ext);
+                       ast_log(LOG_WARNING, "Could not create channel on port:%d with extensions:%s\n", port, ext);
                        return NULL;
                }
        }
        
 
        /* create ast_channel and link all the objects together */
-       cl->bc=newbc;
+       cl->bc = newbc;
        
        tmp = misdn_new(cl, AST_STATE_RESERVED, ext, NULL, format, port, channel);
-       cl->ast=tmp;
+       cl->ast = tmp;
        
        /* register chan in local list */
        cl_queue_chan(&cl_te, cl) ;
@@ -3167,18 +3048,18 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
        read_config(cl, ORG_AST);
 
        /* important */
-       cl->need_hangup=0;
+       cl->need_hangup = 0;
        
        return tmp;
 }
 
 
-static int misdn_send_text (struct ast_channel *chan, const char *text)
+static int misdn_send_text(struct ast_channel *chan, const char *text)
 {
-       struct chan_list *tmp=chan->tech_pvt;
+       struct chan_list *tmp = chan->tech_pvt;
        
        if (tmp && tmp->bc) {
-               ast_copy_string(tmp->bc->display,text,sizeof(tmp->bc->display));
+               ast_copy_string(tmp->bc->display, text, sizeof(tmp->bc->display));
                misdn_lib_send_event(tmp->bc, EVENT_INFORMATION);
        } else {
                ast_log(LOG_WARNING, "No chan_list but send_text request?\n");
@@ -3189,84 +3070,87 @@ static int misdn_send_text (struct ast_channel *chan, const char *text)
 }
 
 static struct ast_channel_tech misdn_tech = {
-       .type="mISDN",
-       .description="Channel driver for mISDN Support (Bri/Pri)",
-       .capabilities= AST_FORMAT_ALAW ,
-       .requester=misdn_request,
-       .send_digit_begin=misdn_digit_begin,
-       .send_digit_end=misdn_digit_end,
-       .call=misdn_call,
-       .bridge=misdn_bridge, 
-       .hangup=misdn_hangup,
-       .answer=misdn_answer,
-       .read=misdn_read,
-       .write=misdn_write,
-       .indicate=misdn_indication,
-       .fixup=misdn_fixup,
-       .send_text=misdn_send_text,
-       .properties=0
+       .type = "mISDN",
+       .description = "Channel driver for mISDN Support (Bri/Pri)",
+       .capabilities = AST_FORMAT_ALAW ,
+       .requester = misdn_request,
+       .send_digit_begin = misdn_digit_begin,
+       .send_digit_end = misdn_digit_end,
+       .call = misdn_call,
+       .bridge = misdn_bridge, 
+       .hangup = misdn_hangup,
+       .answer = misdn_answer,
+       .read = misdn_read,
+       .write = misdn_write,
+       .indicate = misdn_indication,
+       .fixup = misdn_fixup,
+       .send_text = misdn_send_text,
+       .properties = 0
 };
 
 static struct ast_channel_tech misdn_tech_wo_bridge = {
-       .type="mISDN",
-       .description="Channel driver for mISDN Support (Bri/Pri)",
-       .capabilities=AST_FORMAT_ALAW ,
-       .requester=misdn_request,
-       .send_digit_begin=misdn_digit_begin,
-       .send_digit_end=misdn_digit_end,
-       .call=misdn_call,
-       .hangup=misdn_hangup,
-       .answer=misdn_answer,
-       .read=misdn_read,
-       .write=misdn_write,
-       .indicate=misdn_indication,
-       .fixup=misdn_fixup,
-       .send_text=misdn_send_text,
-       .properties=0
+       .type = "mISDN",
+       .description = "Channel driver for mISDN Support (Bri/Pri)",
+       .capabilities = AST_FORMAT_ALAW ,
+       .requester = misdn_request,
+       .send_digit_begin = misdn_digit_begin,
+       .send_digit_end = misdn_digit_end,
+       .call = misdn_call,
+       .hangup = misdn_hangup,
+       .answer = misdn_answer,
+       .read = misdn_read,
+       .write = misdn_write,
+       .indicate = misdn_indication,
+       .fixup = misdn_fixup,
+       .send_text = misdn_send_text,
+       .properties = 0
 };
 
 
-static int glob_channel=0;
+static int glob_channel = 0;
 
 static void update_name(struct ast_channel *tmp, int port, int c) 
 {
-       int chan_offset=0;
+       int chan_offset = 0;
        int tmp_port = misdn_cfg_get_next_port(0);
-       for (; tmp_port > 0; tmp_port=misdn_cfg_get_next_port(tmp_port)) {
-       if (tmp_port == port) break;
-               chan_offset+=misdn_lib_port_is_pri(tmp_port)?30:2;      
+       for (; tmp_port > 0; tmp_port = misdn_cfg_get_next_port(tmp_port)) {
+               if (tmp_port == port)
+                       break;
+               chan_offset += misdn_lib_port_is_pri(tmp_port) ? 30 : 2;        
        }
-       if (c<0) c=0;
+       if (c < 0)
+               c = 0;
 
        ast_string_field_build(tmp, name, "%s/%d-u%d",
                                 misdn_type, chan_offset+c, glob_channel++);
 
-       chan_misdn_log(3,port," --> updating channel name to [%s]\n",tmp->name);
-       
+       chan_misdn_log(3 , port, " --> updating channel name to [%s]\n", tmp->name);
 }
 
 static struct ast_channel *misdn_new(struct chan_list *chlist, int state,  char *exten, char *callerid, int format, int port, int c)
 {
        struct ast_channel *tmp;
        char *cid_name = 0, *cid_num = 0;
-       int chan_offset=0;
+       int chan_offset = 0;
        int tmp_port = misdn_cfg_get_next_port(0);
+       int bridging;
 
-       for (; tmp_port > 0; tmp_port=misdn_cfg_get_next_port(tmp_port)) {
-       if (tmp_port == port) break;
-               chan_offset+=misdn_lib_port_is_pri(tmp_port)?30:2;      
+       for (; tmp_port > 0; tmp_port = misdn_cfg_get_next_port(tmp_port)) {
+               if (tmp_port == port)
+                       break;
+               chan_offset += misdn_lib_port_is_pri(tmp_port) ? 30 : 2;        
        }
-       if (c<0) c=0;
+       if (c < 0)
+               c = 0;
 
-       
        if (callerid) 
                ast_callerid_parse(callerid, &cid_name, &cid_num);
 
        tmp = ast_channel_alloc(1, state, cid_num, cid_name, "", exten, "", 0, "%s/%d-u%d", misdn_type, chan_offset + c, glob_channel++);
-       
+
        if (tmp) {
-               chan_misdn_log(2, 0, " --> * NEW CHANNEL dad:%s oad:%s\n",exten,callerid);
-               
+               chan_misdn_log(2, 0, " --> * NEW CHANNEL dad:%s oad:%s\n", exten, callerid);
+
                tmp->nativeformats = prefformat;
 
                tmp->readformat = format;
@@ -3275,24 +3159,23 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state,  char
                tmp->rawwriteformat = format;
     
                tmp->tech_pvt = chlist;
-               
-               int bridging;
-               misdn_cfg_get( 0, MISDN_GEN_BRIDGING, &bridging, sizeof(int));
-               
+
+               misdn_cfg_get(0, MISDN_GEN_BRIDGING, &bridging, sizeof(bridging));
+
                if (bridging)
                        tmp->tech = &misdn_tech;
                else
                        tmp->tech = &misdn_tech_wo_bridge;
-               
+
                tmp->writeformat = format;
                tmp->readformat = format;
                tmp->priority=1;
-               
+
                if (exten) 
-                       ast_copy_string(tmp->exten, exten,  sizeof(tmp->exten));
+                       ast_copy_string(tmp->exten, exten, sizeof(tmp->exten));
                else
-                       chan_misdn_log(1,0,"misdn_new: no exten given.\n");
-               
+                       chan_misdn_log(1, 0, "misdn_new: no exten given.\n");
+
                if (callerid) {
                        char *cid_name, *cid_num;
       
@@ -3304,14 +3187,11 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state,  char
                        tmp->cid.cid_name = ast_strdup(cid_name);
                }
 
-               {
-                       if (pipe(chlist->pipe)<0)
-                               perror("Pipe failed\n");
-                       
-                       tmp->fds[0]=chlist->pipe[0];
-                       
-               }
-               
+               if (pipe(chlist->pipe) < 0)
+                       ast_log(LOG_ERROR, "Pipe failed\n");
+
+               tmp->fds[0] = chlist->pipe[0];
+
                if (state == AST_STATE_RING)
                        tmp->rings = 1;
                else
@@ -3319,7 +3199,7 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state,  char
                
                
        } else {
-               chan_misdn_log(-1,0,"Unable to allocate channel structure\n");
+               chan_misdn_log(-1, 0, "Unable to allocate channel structure\n");
        }
        
        return tmp;
@@ -3327,51 +3207,50 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state,  char
 
 static struct chan_list *find_chan_by_bc(struct chan_list *list, struct misdn_bchannel *bc)
 {
-       struct chan_list *help=list;
-       for (;help; help=help->next) {
+       struct chan_list *help = list;
+       for (; help; help = help->next) {
                if (help->bc == bc) return help;
        }
-  
-       chan_misdn_log(6, bc->port, "$$$ find_chan: No channel found for oad:%s dad:%s\n",bc->oad,bc->dad);
-  
+
+       chan_misdn_log(6, bc->port, "$$$ find_chan: No channel found for oad:%s dad:%s\n", bc->oad, bc->dad);
+
        return NULL;
 }
 
 static struct chan_list *find_chan_by_pid(struct chan_list *list, int pid)
 {
-       struct chan_list *help=list;
-       for (;help; help=help->next) {
+       struct chan_list *help = list;
+       for (; help; help = help->next) {
                if ( help->bc && (help->bc->pid == pid) ) return help;
        }
-  
-       chan_misdn_log(6, 0, "$$$ find_chan: No channel found for pid:%d\n",pid);
-  
+
+       chan_misdn_log(6, 0, "$$$ find_chan: No channel found for pid:%d\n", pid);
+
        return NULL;
 }
 
 static struct chan_list *find_holded(struct chan_list *list, struct misdn_bchannel *bc)
 {
-       struct chan_list *help=list;
-       
-       chan_misdn_log(6, bc->port, "$$$ find_holded: channel:%d oad:%s dad:%s\n",bc->channel, bc->oad,bc->dad);
-       for (;help; help=help->next) {
-               chan_misdn_log(4, bc->port, "$$$ find_holded: --> holded:%d channel:%d\n",help->state==MISDN_HOLDED, help->hold_info.channel);
+       struct chan_list *help = list;
+
+       chan_misdn_log(6, bc->port, "$$$ find_holded: channel:%d oad:%s dad:%s\n", bc->channel, bc->oad, bc->dad);
+       for (;help; help = help->next) {
+               chan_misdn_log(4, bc->port, "$$$ find_holded: --> holded:%d channel:%d\n", help->state==MISDN_HOLDED, help->hold_info.channel);
                if (    (help->state == MISDN_HOLDED) && 
                        (help->hold_info.port == bc->port) ) 
                        return help;
-       }       
-       chan_misdn_log(6, bc->port, "$$$ find_chan: No channel found for oad:%s dad:%s\n",bc->oad,bc->dad);
-  
+       }
+       chan_misdn_log(6, bc->port, "$$$ find_chan: No channel found for oad:%s dad:%s\n", bc->oad, bc->dad);
+
        return NULL;
 }
 
 
 static struct chan_list *find_holded_l3(struct chan_list *list, unsigned long l3_id, int w) 
-
 {
-       struct chan_list *help=list;
+       struct chan_list *help = list;
 
-       for (;help; help=help->next) {
+       for (; help; help = help->next) {
                if ( (help->state == MISDN_HOLDED) &&
                         (help->l3id == l3_id)   
                        ) 
@@ -3383,29 +3262,29 @@ static struct chan_list *find_holded_l3(struct chan_list *list, unsigned long l3
 
 static void cl_queue_chan(struct chan_list **list, struct chan_list *chan)
 {
-       chan_misdn_log(4, chan->bc? chan->bc->port : 0, "* Queuing chan %p\n",chan);
+       chan_misdn_log(4, chan->bc ? chan->bc->port : 0, "* Queuing chan %p\n", chan);
   
        ast_mutex_lock(&cl_te_lock);
        if (!*list) {
                *list = chan;
        } else {
-               struct chan_list *help=*list;
-               for (;help->next; help=help->next); 
-               help->next=chan;
+               struct chan_list *help = *list;
+               for (; help->next; help = help->next); 
+               help->next = chan;
        }
-       chan->next=NULL;
+       chan->next = NULL;
        ast_mutex_unlock(&cl_te_lock);
 }
 
 static void cl_dequeue_chan(struct chan_list **list, struct chan_list *chan) 
 {
+       struct chan_list *help;
+
        if (chan->dsp) 
                ast_dsp_free(chan->dsp);
        if (chan->trans)
                ast_translator_free_path(chan->trans);
 
-       
-
        ast_mutex_lock(&cl_te_lock);
        if (!*list) {
                ast_mutex_unlock(&cl_te_lock);
@@ -3413,19 +3292,16 @@ static void cl_dequeue_chan(struct chan_list **list, struct chan_list *chan)
        }
   
        if (*list == chan) {
-               *list=(*list)->next;
+               *list = (*list)->next;
                ast_mutex_unlock(&cl_te_lock);
-               return ;
+               return;
        }
   
-       {
-               struct chan_list *help=*list;
-               for (;help->next; help=help->next) {
-                       if (help->next == chan) {
-                               help->next=help->next->next;
-                               ast_mutex_unlock(&cl_te_lock);
-                               return;
-                       }
+       for (help = *list; help->next; help = help->next) {
+               if (help->next == chan) {
+                       help->next = help->next->next;
+                       ast_mutex_unlock(&cl_te_lock);
+                       return;
                }
        }
        
@@ -3437,145 +3313,138 @@ static void cl_dequeue_chan(struct chan_list **list, struct chan_list *chan)
 
 int pbx_start_chan(struct chan_list *ch)
 {
-       int ret=ast_pbx_start(ch->ast); 
+       int ret = ast_pbx_start(ch->ast);       
 
-       if (ret>=0) 
-               ch->need_hangup=0;
+       if (ret >= 0) 
+               ch->need_hangup = 0;
        else
-               ch->need_hangup=1;
+               ch->need_hangup = 1;
 
        return ret;
 }
 
 static void hangup_chan(struct chan_list *ch)
 {
-       int port=ch?ch->bc?ch->bc->port:0:0;
+       int port = ch ? (ch->bc ? ch->bc->port : 0) : 0;
        if (!ch) {
-               cb_log(1,0,"Cannot hangup chan, no ch\n");
+               cb_log(1, 0, "Cannot hangup chan, no ch\n");
                return;
        }
 
-       cb_log(5,port,"hangup_chan called\n");
+       cb_log(5, port, "hangup_chan called\n");
 
-       if (ch->need_hangup) 
-       {
-               cb_log(2,port," --> hangup\n");
-               send_cause2ast(ch->ast,ch->bc,ch);
-               ch->need_hangup=0;
-               ch->need_queue_hangup=0;
+       if (ch->need_hangup) {
+               cb_log(2, port, " --> hangup\n");
+               send_cause2ast(ch->ast, ch->bc, ch);
+               ch->need_hangup = 0;
+               ch->need_queue_hangup = 0;
                if (ch->ast)
                        ast_hangup(ch->ast);
                return;
        }
 
        if (!ch->need_queue_hangup) {
-               cb_log(2,port," --> No need to queue hangup\n");
+               cb_log(2, port, " --> No need to queue hangup\n");
        }
 
-       ch->need_queue_hangup=0;
+       ch->need_queue_hangup = 0;
        if (ch->ast) {
-               send_cause2ast(ch->ast,ch->bc,ch);
+               send_cause2ast(ch->ast, ch->bc, ch);
 
                if (ch->ast)
                        ast_queue_hangup(ch->ast);
-               cb_log(2,port," --> queue_hangup\n");
+               cb_log(2, port, " --> queue_hangup\n");
        } else {
-               cb_log(1,port,"Cannot hangup chan, no ast\n");
+               cb_log(1, port, "Cannot hangup chan, no ast\n");
        }
 }
 
 /** Isdn asks us to release channel, pendant to misdn_hangup **/
 static void release_chan(struct misdn_bchannel *bc) {
-       struct ast_channel *ast=NULL;
-       {
-               struct chan_list *ch=find_chan_by_bc(cl_te, bc);
-               if (!ch)  {
-                       chan_misdn_log(1, bc->port, "release_chan: Ch not found!\n");
-                       return;
-               }
+       struct ast_channel *ast = NULL;
+       struct chan_list *ch = find_chan_by_bc(cl_te, bc);
+
+       if (!ch)  {
+               chan_misdn_log(1, bc->port, "release_chan: Ch not found!\n");
+               return;
+       }
                
-               if (ch->ast) {
-                       ast=ch->ast;
-               } 
+       if (ch->ast) {
+               ast = ch->ast;
+       } 
                
-               chan_misdn_log(5, bc->port, "release_chan: bc with l3id: %x\n",bc->l3_id);
+       chan_misdn_log(5, bc->port, "release_chan: bc with l3id: %x\n", bc->l3_id);
                
-               /*releaseing jitterbuffer*/
-               if (ch->jb ) {
-                       misdn_jb_destroy(ch->jb);
-                       ch->jb=NULL;
-               } else {
-                       if (!bc->nojitter)
-                               chan_misdn_log(5,bc->port,"Jitterbuffer already destroyed.\n");
-               }
+       /*releaseing jitterbuffer*/
+       if (ch->jb ) {
+               misdn_jb_destroy(ch->jb);
+               ch->jb = NULL;
+       } else {
+               if (!bc->nojitter)
+                       chan_misdn_log(5, bc->port, "Jitterbuffer already destroyed.\n");
+       }
 
-               if (ch->overlap_dial) {
-                       if (ch->overlap_dial_task != -1) {
-                               misdn_tasks_remove(ch->overlap_dial_task);
-                               ch->overlap_dial_task = -1;
-                       }
-                       ast_mutex_destroy(&ch->overlap_tv_lock);
+       if (ch->overlap_dial) {
+               if (ch->overlap_dial_task != -1) {
+                       misdn_tasks_remove(ch->overlap_dial_task);
+                       ch->overlap_dial_task = -1;
                }
+               ast_mutex_destroy(&ch->overlap_tv_lock);
+       }
 
-               if (ch->originator == ORG_AST) {
-                       misdn_out_calls[bc->port]--;
-               } else {
-                       misdn_in_calls[bc->port]--;
-               }
+       if (ch->originator == ORG_AST) {
+               misdn_out_calls[bc->port]--;
+       } else {
+               misdn_in_calls[bc->port]--;
+       }
                
-               if (ch) {
-                       
-                       close(ch->pipe[0]);
-                       close(ch->pipe[1]);
+       if (ch) {
+               close(ch->pipe[0]);
+               close(ch->pipe[1]);
 
-                       
-                       if (ast && MISDN_ASTERISK_TECH_PVT(ast)) {
-                               chan_misdn_log(1, bc->port, "* RELEASING CHANNEL pid:%d ctx:%s dad:%s oad:%s state: %s\n",bc?bc->pid:-1, ast->context, ast->exten,ast->cid.cid_num,misdn_get_ch_state(ch));
-                               chan_misdn_log(3, bc->port, " --> * State Down\n");
-                               MISDN_ASTERISK_TECH_PVT(ast)=NULL;
-                               
-      
-                               if (ast->_state != AST_STATE_RESERVED) {
-                                       chan_misdn_log(3, bc->port, " --> Setting AST State to down\n");
-                                       ast_setstate(ast, AST_STATE_DOWN);
-                               }
+               if (ast && MISDN_ASTERISK_TECH_PVT(ast)) {
+                       chan_misdn_log(1, bc->port, "* RELEASING CHANNEL pid:%d ctx:%s dad:%s oad:%s state: %s\n", bc ? bc->pid : -1, ast->context, ast->exten, ast->cid.cid_num, misdn_get_ch_state(ch));
+                       chan_misdn_log(3, bc->port, " --> * State Down\n");
+                       MISDN_ASTERISK_TECH_PVT(ast) = NULL;
+
+                       if (ast->_state != AST_STATE_RESERVED) {
+                               chan_misdn_log(3, bc->port, " --> Setting AST State to down\n");
+                               ast_setstate(ast, AST_STATE_DOWN);
                        }
-                               
-                       ch->state=MISDN_CLEANING;
-                       cl_dequeue_chan(&cl_te, ch);
-                       
-                       free(ch);
-               } else {
-                       /* chan is already cleaned, so exiting  */
                }
+
+               ch->state = MISDN_CLEANING;
+               cl_dequeue_chan(&cl_te, ch);
+
+               ast_free(ch);
+       } else {
+               /* chan is already cleaned, so exiting  */
        }
 }
 /*** release end **/
 
 static void misdn_transfer_bc(struct chan_list *tmp_ch, struct chan_list *holded_chan)
 {
-       chan_misdn_log(4,0,"TRANSFERING %s to %s\n",holded_chan->ast->name, tmp_ch->ast->name);
-       
-       tmp_ch->state=MISDN_HOLD_DISCONNECT;
-  
+       chan_misdn_log(4, 0, "TRANSFERING %s to %s\n", holded_chan->ast->name, tmp_ch->ast->name);
+
+       tmp_ch->state = MISDN_HOLD_DISCONNECT;
+
        ast_moh_stop(ast_bridged_channel(holded_chan->ast));
 
        holded_chan->state=MISDN_CONNECTED;
-       //misdn_lib_transfer(holded_chan->bc);
+       /* misdn_lib_transfer(holded_chan->bc); */
        ast_channel_masquerade(holded_chan->ast, ast_bridged_channel(tmp_ch->ast));
 }
 
 
-static void do_immediate_setup(struct misdn_bchannel *bc,struct chan_list *ch , struct ast_channel *ast)
+static void do_immediate_setup(struct misdn_bchannel *bc, struct chan_list *ch, struct ast_channel *ast)
 {
-       char predial[256]="";
-       char *p = predial;
-  
+       char *predial;
        struct ast_frame fr;
-  
-       strncpy(predial, ast->exten, sizeof(predial) -1 );
-  
-       ch->state=MISDN_DIALING;
+
+       predial = ast_strdupa(ast->exten);
+
+       ch->state = MISDN_DIALING;
 
        if (!ch->noautorespond_on_setup) {
                if (bc->nt) {
@@ -3595,10 +3464,10 @@ static void do_immediate_setup(struct misdn_bchannel *bc,struct chan_list *ch ,
 
        chan_misdn_log(1, bc->port, "* Starting Ast ctx:%s dad:%s oad:%s with 's' extension\n", ast->context, ast->exten, ast->cid.cid_num);
   
-       strncpy(ast->exten,"s", 2);
+       strncpy(ast->exten, "s", 2);
   
-       if (pbx_start_chan(ch)<0) {
-               ast=NULL;
+       if (pbx_start_chan(ch) < 0) {
+               ast = NULL;
                hangup_chan(ch);
                hanguptone_indicate(ch);
 
@@ -3609,44 +3478,44 @@ static void do_immediate_setup(struct misdn_bchannel *bc,struct chan_list *ch ,
        }
   
   
-       while (!ast_strlen_zero(p) ) {
+       while (!ast_strlen_zero(predial) ) {
                fr.frametype = AST_FRAME_DTMF;
-               fr.subclass = *p ;
-               fr.src=NULL;
-               fr.data = NULL ;
+               fr.subclass = *predial;
+               fr.src = NULL;
+               fr.data = NULL;
                fr.datalen = 0;
-               fr.samples = 0 ;
-               fr.mallocd =0 ;
-               fr.offset= 0 ;
-               fr.delivery= ast_tv(0,0) ;
+               fr.samples = 0;
+               fr.mallocd = 0;
+               fr.offset = 0;
+               fr.delivery = ast_tv(0,0);
 
                if (ch->ast && MISDN_ASTERISK_PVT(ch->ast) && MISDN_ASTERISK_TECH_PVT(ch->ast)) {
                        ast_queue_frame(ch->ast, &fr);
                }
-               p++;
+               predial++;
        }
 }
 
 
 
-static void send_cause2ast(struct ast_channel *ast, struct misdn_bchannel*bc, struct chan_list *ch) {
+static void send_cause2ast(struct ast_channel *ast, struct misdn_bchannel *bc, struct chan_list *ch) {
        if (!ast) {
-               chan_misdn_log(1,0,"send_cause2ast: No Ast\n");
+               chan_misdn_log(1, 0, "send_cause2ast: No Ast\n");
                return;
        }
        if (!bc) {
-               chan_misdn_log(1,0,"send_cause2ast: No BC\n");
+               chan_misdn_log(1, 0, "send_cause2ast: No BC\n");
                return;
        }
        if (!ch) {
-               chan_misdn_log(1,0,"send_cause2ast: No Ch\n");
+               chan_misdn_log(1, 0, "send_cause2ast: No Ch\n");
                return;
        }
-       
-       ast->hangupcause=bc->cause;
-       
-       switch ( bc->cause) {
-               
+
+       ast->hangupcause = bc->cause;
+
+       switch (bc->cause) {
+
        case 1: /** Congestion Cases **/
        case 2:
        case 3:
@@ -3657,105 +3526,98 @@ static void send_cause2ast(struct ast_channel *ast, struct misdn_bchannel*bc, st
                 * Not Queueing the Congestion anymore, since we want to hear
                 * the inband message
                 *
-               chan_misdn_log(1, bc?bc->port:0, " --> * SEND: Queue Congestion pid:%d\n", bc?bc->pid:-1);
-               ch->state=MISDN_BUSY;
+               chan_misdn_log(1, bc ? bc->port : 0, " --> * SEND: Queue Congestion pid:%d\n", bc ? bc->pid : -1);
+               ch->state = MISDN_BUSY;
                
                ast_queue_control(ast, AST_CONTROL_CONGESTION);
                */
                break;
-               
+
        case 21:
        case 17: /* user busy */
-       
-               ch->state=MISDN_BUSY;
-                       
+
+               ch->state = MISDN_BUSY;
+
                if (!ch->need_busy) {
-                       chan_misdn_log(1,bc?bc->port:0, "Queued busy already\n");
+                       chan_misdn_log(1, bc ? bc->port : 0, "Queued busy already\n");
                        break;
                }
-               
-               chan_misdn_log(1,  bc?bc->port:0, " --> * SEND: Queue Busy pid:%d\n", bc?bc->pid:-1);
+
+               chan_misdn_log(1, bc ? bc->port : 0, " --> * SEND: Queue Busy pid:%d\n", bc ? bc->pid : -1);
                
                ast_queue_control(ast, AST_CONTROL_BUSY);
                
-               ch->need_busy=0;
+               ch->need_busy = 0;
                
                break;
        }
 }
 
 
-
-
 void import_ch(struct ast_channel *chan, struct misdn_bchannel *bc, struct chan_list *ch)
 {
-       const char *tmp;
-       tmp=pbx_builtin_getvar_helper(chan,"MISDN_PID");
+       const char *tmp = pbx_builtin_getvar_helper(chan, "MISDN_PID");
        if (tmp) {
-               ch->other_pid=atoi(tmp);
-               chan_misdn_log(3,bc->port," --> IMPORT_PID: importing pid:%s\n",tmp);
-               if (ch->other_pid >0) {
-                       ch->other_ch=find_chan_by_pid(cl_te,ch->other_pid);
-                       if (ch->other_ch) ch->other_ch->other_ch=ch;
+               ch->other_pid = atoi(tmp);
+               chan_misdn_log(3, bc->port, " --> IMPORT_PID: importing pid:%s\n", tmp);
+               if (ch->other_pid > 0) {
+                       ch->other_ch = find_chan_by_pid(cl_te, ch->other_pid);
+                       if (ch->other_ch)
+                               ch->other_ch->other_ch = ch;
                }
        }
 
-       tmp=pbx_builtin_getvar_helper(chan,"MISDN_ADDRESS_COMPLETE");
+       tmp = pbx_builtin_getvar_helper(chan, "MISDN_ADDRESS_COMPLETE");
        if (tmp && (atoi(tmp) == 1)) {
-               bc->sending_complete=1;
+               bc->sending_complete = 1;
        }
-       
-       tmp=pbx_builtin_getvar_helper(chan,"MISDN_USERUSER");
+
+       tmp = pbx_builtin_getvar_helper(chan, "MISDN_USERUSER");
        if (tmp) {
                ast_log(LOG_NOTICE, "MISDN_USERUSER: %s\n", tmp);
-               strcpy(bc->uu, tmp);
-               bc->uulen=strlen(bc->uu);
+               ast_copy_string(bc->uu, tmp, sizeof(bc->uu));
+               bc->uulen = strlen(bc->uu);
        }
 
-       tmp=pbx_builtin_getvar_helper(chan,"MISDN_KEYPAD");
-       if (tmp) {
-               strncpy(bc->keypad,tmp,sizeof(bc->keypad));
-               bc->keypad[sizeof(bc->keypad)-1]=0;
-       }
-       
-       
+       tmp = pbx_builtin_getvar_helper(chan, "MISDN_KEYPAD");
+       if (tmp)
+               ast_copy_string(bc->keypad, tmp, sizeof(bc->keypad));
 }
 
 void export_ch(struct ast_channel *chan, struct misdn_bchannel *bc, struct chan_list *ch)
 {
        char tmp[32];
-       chan_misdn_log(3,bc->port," --> EXPORT_PID: pid:%d\n",bc->pid);
-       sprintf(tmp,"%d",bc->pid);
-       pbx_builtin_setvar_helper(chan,"_MISDN_PID",tmp);
+       chan_misdn_log(3, bc->port, " --> EXPORT_PID: pid:%d\n", bc->pid);
+       snprintf(tmp, sizeof(tmp), "%d", bc->pid);
+       pbx_builtin_setvar_helper(chan, "_MISDN_PID", tmp);
 
        if (bc->sending_complete) {
-               sprintf(tmp,"%d",bc->sending_complete);
-               pbx_builtin_setvar_helper(chan,"MISDN_ADDRESS_COMPLETE",tmp);
+               snprintf(tmp, sizeof(tmp), "%d", bc->sending_complete);
+               pbx_builtin_setvar_helper(chan, "MISDN_ADDRESS_COMPLETE", tmp);
        }
 
        if (bc->urate) {
-               sprintf(tmp,"%d",bc->urate);
-               pbx_builtin_setvar_helper(chan,"MISDN_URATE",tmp);
+               snprintf(tmp, sizeof(tmp), "%d", bc->urate);
+               pbx_builtin_setvar_helper(chan, "MISDN_URATE", tmp);
        }
 
-       if (bc->uulen) {
-               pbx_builtin_setvar_helper(chan,"MISDN_USERUSER",bc->uu);
-       }
+       if (bc->uulen)
+               pbx_builtin_setvar_helper(chan, "MISDN_USERUSER", bc->uu);
 
-       if (bc->keypad[0]) 
-               pbx_builtin_setvar_helper(chan,"MISDN_KEYPAD",bc->keypad);
+       if (!ast_strlen_zero(bc->keypad)) 
+               pbx_builtin_setvar_helper(chan, "MISDN_KEYPAD", bc->keypad);
 }
 
 int add_in_calls(int port)
 {
        int max_in_calls;
        
-       misdn_cfg_get( port, MISDN_CFG_MAX_IN, &max_in_calls, sizeof(max_in_calls));
+       misdn_cfg_get(port, MISDN_CFG_MAX_IN, &max_in_calls, sizeof(max_in_calls));
        misdn_in_calls[port]++;
 
-       if (max_in_calls >=0 && max_in_calls<misdn_in_calls[port]) {
-               ast_log(LOG_NOTICE,"Marking Incoming Call on port[%d]\n",port);
-               return misdn_in_calls[port]-max_in_calls;
+       if (max_in_calls >= 0 && max_in_calls < misdn_in_calls[port]) {
+               ast_log(LOG_NOTICE, "Marking Incoming Call on port[%d]\n", port);
+               return misdn_in_calls[port] - max_in_calls;
        }
        
        return 0;
@@ -3765,12 +3627,11 @@ int add_out_calls(int port)
 {
        int max_out_calls;
        
-       misdn_cfg_get( port, MISDN_CFG_MAX_OUT, &max_out_calls, sizeof(max_out_calls));
-       
+       misdn_cfg_get(port, MISDN_CFG_MAX_OUT, &max_out_calls, sizeof(max_out_calls));
 
-       if (max_out_calls >=0 && max_out_calls<=misdn_out_calls[port]) {
-               ast_log(LOG_NOTICE,"Rejecting Outgoing Call on port[%d]\n",port);
-               return (misdn_out_calls[port]+1)-max_out_calls;
+       if (max_out_calls >= 0 && max_out_calls <= misdn_out_calls[port]) {
+               ast_log(LOG_NOTICE, "Rejecting Outgoing Call on port[%d]\n", port);
+               return (misdn_out_calls[port] + 1) - max_out_calls;
        }
 
        misdn_out_calls[port]++;
@@ -3779,19 +3640,19 @@ int add_out_calls(int port)
 }
 
 static void wait_for_digits(struct chan_list *ch, struct misdn_bchannel *bc, struct ast_channel *chan) {
-       ch->state=MISDN_WAITING4DIGS;
-       misdn_lib_send_event(bc, EVENT_SETUP_ACKNOWLEDGE );
+       ch->state = MISDN_WAITING4DIGS;
+       misdn_lib_send_event(bc, EVENT_SETUP_ACKNOWLEDGE);
        if (bc->nt)
                dialtone_indicate(ch);
 }
 
 static void start_pbx(struct chan_list *ch, struct misdn_bchannel *bc, struct ast_channel *chan) {
-       if (pbx_start_chan(ch)<0) {
+       if (pbx_start_chan(ch) < 0) {
                hangup_chan(ch);
                chan_misdn_log(-1, bc->port, "ast_pbx_start returned <0 in SETUP\n");
                if (bc->nt) {
                        hanguptone_indicate(ch);
-                       misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE );
+                       misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE);
                } else
                        misdn_lib_send_event(bc, EVENT_RELEASE);
        }
@@ -3803,58 +3664,57 @@ static void start_pbx(struct chan_list *ch, struct misdn_bchannel *bc, struct as
 static enum event_response_e
 cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
 {
-       struct chan_list *ch=find_chan_by_bc(cl_te, bc);
+       struct chan_list *ch = find_chan_by_bc(cl_te, bc);
        
        if (event != EVENT_BCHAN_DATA && event != EVENT_TONE_GENERATE) { /*  Debug Only Non-Bchan */
-               int debuglevel=1;
-               if ( event==EVENT_CLEANUP && !user_data)
-                       debuglevel=5;
+               int debuglevel = 1;
+               if ( event == EVENT_CLEANUP && !user_data)
+                       debuglevel = 5;
 
-               chan_misdn_log(debuglevel, bc->port, "I IND :%s oad:%s dad:%s pid:%d state:%s\n", manager_isdn_get_info(event), bc->oad, bc->dad, bc->pid, ch?misdn_get_ch_state(ch):"none");
-               if (debuglevel==1) {
+               chan_misdn_log(debuglevel, bc->port, "I IND :%s oad:%s dad:%s pid:%d state:%s\n", manager_isdn_get_info(event), bc->oad, bc->dad, bc->pid, ch ? misdn_get_ch_state(ch) : "none");
+               if (debuglevel == 1) {
                        misdn_lib_log_ies(bc);
-                       chan_misdn_log(4,bc->port," --> bc_state:%s\n",bc_state2str(bc->bc_state));
+                       chan_misdn_log(4, bc->port, " --> bc_state:%s\n", bc_state2str(bc->bc_state));
                }
        }
        
        if (!ch) {
                switch(event) {
-                       case EVENT_SETUP:
-                       case EVENT_DISCONNECT:
-                       case EVENT_PORT_ALARM:
-                       case EVENT_RETRIEVE:
-                       case EVENT_NEW_BC:
-                       case EVENT_FACILITY:
-                               break;
-                       case EVENT_RELEASE_COMPLETE:
-                               chan_misdn_log(1, bc->port, " --> no Ch, so we've already released.\n");
-                               break;
-                       case EVENT_CLEANUP:
-                       case EVENT_TONE_GENERATE:
-                       case EVENT_BCHAN_DATA:
-                               return -1;
-
-                       default:
-                               chan_misdn_log(1,bc->port, "Chan not existing at the moment bc->l3id:%x bc:%p event:%s port:%d channel:%d\n",bc->l3_id, bc, manager_isdn_get_info( event), bc->port,bc->channel);
-                               return -1;
+               case EVENT_SETUP:
+               case EVENT_DISCONNECT:
+               case EVENT_PORT_ALARM:
+               case EVENT_RETRIEVE:
+               case EVENT_NEW_BC:
+               case EVENT_FACILITY:
+                       break;
+               case EVENT_RELEASE_COMPLETE:
+                       chan_misdn_log(1, bc->port, " --> no Ch, so we've already released.\n");
+                       break;
+               case EVENT_CLEANUP:
+               case EVENT_TONE_GENERATE:
+               case EVENT_BCHAN_DATA:
+                       return -1;
+               default:
+                       chan_misdn_log(1, bc->port, "Chan not existing at the moment bc->l3id:%x bc:%p event:%s port:%d channel:%d\n", bc->l3_id, bc, manager_isdn_get_info(event), bc->port, bc->channel);
+                       return -1;
                }
        }
        
-       if (ch ) {
+       if (ch) {
                switch (event) {
                case EVENT_TONE_GENERATE:
-               break;
+                       break;
                case EVENT_DISCONNECT:
                case EVENT_RELEASE:
                case EVENT_RELEASE_COMPLETE:
                case EVENT_CLEANUP:
                case EVENT_TIMEOUT:
                        if (!ch->ast)
-                               chan_misdn_log(3,bc->port,"ast_hangup already called, so we have no ast ptr anymore in event(%s)\n",manager_isdn_get_info(event));
+                               chan_misdn_log(3, bc->port, "ast_hangup already called, so we have no ast ptr anymore in event(%s)\n", manager_isdn_get_info(event));
                        break;
                default:
-                       if ( !ch->ast  || !MISDN_ASTERISK_PVT(ch->ast) || !MISDN_ASTERISK_TECH_PVT(ch->ast)) {
-                               if (event!=EVENT_BCHAN_DATA)
+                       if (!ch->ast  || !MISDN_ASTERISK_PVT(ch->ast) || !MISDN_ASTERISK_TECH_PVT(ch->ast)) {
+                               if (event != EVENT_BCHAN_DATA)
                                        ast_log(LOG_NOTICE, "No Ast or No private Pointer in Event (%d:%s)\n", event, manager_isdn_get_info(event));
                                return -1;
                        }
@@ -3865,14 +3725,14 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
        switch (event) {
        case EVENT_PORT_ALARM:
                {
-                       int boa=0;
-                       misdn_cfg_get( bc->port, MISDN_CFG_ALARM_BLOCK, &boa, sizeof(int));
+                       int boa = 0;
+                       misdn_cfg_get(bc->port, MISDN_CFG_ALARM_BLOCK, &boa, sizeof(boa));
                        if (boa) {
-                               cb_log(1,bc->port," --> blocking\n");
+                               cb_log(1, bc->port, " --> blocking\n");
                                misdn_lib_port_block(bc->port); 
                        }
                }
-       break;
+               break;
        case EVENT_BCHAN_ACTIVATED:
                break;
                
@@ -3887,32 +3747,31 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
 
        case EVENT_NEW_BC:
                if (!ch) {
-                       ch=find_holded(cl_te,bc);
+                       ch = find_holded(cl_te,bc);
                }
                
                if (!ch) {
-                       ast_log(LOG_WARNING,"NEW_BC without chan_list?\n");
+                       ast_log(LOG_WARNING, "NEW_BC without chan_list?\n");
                        break;
                }
 
                if (bc)
-                       ch->bc=(struct misdn_bchannel*)user_data;
+                       ch->bc = (struct misdn_bchannel *)user_data;
                break;
                
        case EVENT_DTMF_TONE:
        {
                /*  sending INFOS as DTMF-Frames :) */
-               struct ast_frame fr;
-               memset(&fr, 0 , sizeof(fr));
+               struct ast_frame fr = { 0, };
                fr.frametype = AST_FRAME_DTMF;
                fr.subclass = bc->dtmf ;
-               fr.src=NULL;
-               fr.data = NULL ;
+               fr.src = NULL;
+               fr.data = NULL;
                fr.datalen = 0;
-               fr.samples = 0 ;
-               fr.mallocd =0 ;
-               fr.offset= 0 ;
-               fr.delivery= ast_tv(0,0) ;
+               fr.samples = 0;
+               fr.mallocd = 0;
+               fr.offset = 0;
+               fr.delivery = ast_tv(0,0);
                
                if (!ch->ignore_dtmf) {
                        chan_misdn_log(2, bc->port, " --> DTMF:%c\n", bc->dtmf);
@@ -3921,51 +3780,45 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                        chan_misdn_log(2, bc->port, " --> Ingoring DTMF:%c due to bridge flags\n", bc->dtmf);
                }
        }
-       break;
+               break;
        case EVENT_STATUS:
                break;
     
        case EVENT_INFORMATION:
        {
-               int l;
-
                if ( ch->state != MISDN_CONNECTED ) 
                        stop_indicate(ch);
        
-               if (!ch->ast) break;
+               if (!ch->ast)
+                       break;
 
                if (ch->state == MISDN_WAITING4DIGS ) {
                        /*  Ok, incomplete Setup, waiting till extension exists */
                        if (ast_strlen_zero(bc->info_dad) && ! ast_strlen_zero(bc->keypad)) {
                                chan_misdn_log(1, bc->port, " --> using keypad as info\n");
-                               strcpy(bc->info_dad,bc->keypad);
+                               ast_copy_string(bc->info_dad, bc->keypad, sizeof(bc->info_dad));
                        }
 
-                       l = sizeof(bc->dad);
-                       strncat(bc->dad,bc->info_dad, l);
-                       bc->dad[l-1] = 0;
-
-                       l = sizeof(ch->ast->exten);
-                       strncpy(ch->ast->exten, bc->dad, l);
-                       ch->ast->exten[l-1] = 0;
+                       strncat(bc->dad,bc->info_dad, sizeof(bc->dad) - 1);
+                       ast_copy_string(ch->ast->exten, bc->dad, sizeof(ch->ast->exten));
 
                        /* Check for Pickup Request first */
                        if (!strcmp(ch->ast->exten, ast_pickup_ext())) {
                                if (ast_pickup_call(ch->ast)) {
                                        hangup_chan(ch);
                                } else {
-                                       struct ast_channel *chan=ch->ast;
+                                       struct ast_channel *chan = ch->ast;
                                        ch->state = MISDN_CALLING_ACKNOWLEDGE;
                                        ast_setstate(chan, AST_STATE_DOWN);
                                        hangup_chan(ch);
-                                       ch->ast=NULL;
+                                       ch->ast = NULL;
                                        break;
                                }
                        }
                        
-                       if(!ast_canmatch_extension(ch->ast, ch->context, bc->dad, 1, bc->oad)) {
+                       if (!ast_canmatch_extension(ch->ast, ch->context, bc->dad, 1, bc->oad)) {
                                if (ast_exists_extension(ch->ast, ch->context, "i", 1, bc->oad)) {
-                                       ast_log(LOG_WARNING, "Extension can never match, So jumping to 'i' extension. port(%d)\n",bc->port);
+                                       ast_log(LOG_WARNING, "Extension can never match, So jumping to 'i' extension. port(%d)\n", bc->port);
                                        strcpy(ch->ast->exten, "i");
                                        start_pbx(ch, bc, ch->ast);
                                        break;
@@ -3977,10 +3830,10 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
 
                                if (bc->nt)
                                        hanguptone_indicate(ch);
-                               ch->state=MISDN_EXTCANTMATCH;
-                               bc->out_cause=1;
+                               ch->state = MISDN_EXTCANTMATCH;
+                               bc->out_cause = 1;
 
-                               misdn_lib_send_event(bc, EVENT_DISCONNECT );
+                               misdn_lib_send_event(bc, EVENT_DISCONNECT);
                                break;
                        }
 
@@ -4000,28 +3853,22 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                } else {
                        /*  sending INFOS as DTMF-Frames :) */
                        struct ast_frame fr;
+                       int digits;
                        fr.frametype = AST_FRAME_DTMF;
                        fr.subclass = bc->info_dad[0] ;
-                       fr.src=NULL;
-                       fr.data = NULL ;
+                       fr.src = NULL;
+                       fr.data = NULL;
                        fr.datalen = 0;
-                       fr.samples = 0 ;
-                       fr.mallocd =0 ;
-                       fr.offset= 0 ;
-                       fr.delivery= ast_tv(0,0) ;
+                       fr.samples = 0;
+                       fr.mallocd = 0;
+                       fr.offset = 0;
+                       fr.delivery = ast_tv(0,0);
 
-                       
-                       int digits;
-                       misdn_cfg_get( 0, MISDN_GEN_APPEND_DIGITS2EXTEN, &digits, sizeof(int));
+                       misdn_cfg_get(0, MISDN_GEN_APPEND_DIGITS2EXTEN, &digits, sizeof(digits));
                        if (ch->state != MISDN_CONNECTED ) {
                                if (digits) {
-                                       int l = sizeof(bc->dad);
-                                       strncat(bc->dad,bc->info_dad, l);
-                                       bc->dad[l-1] = 0;
-                                       l = sizeof(ch->ast->exten);
-                                       strncpy(ch->ast->exten, bc->dad, l);
-                                       ch->ast->exten[l-1] = 0;
-
+                                       strncat(bc->dad, bc->info_dad, sizeof(bc->dad) - 1);
+                                       ast_copy_string(ch->ast->exten, bc->dad, sizeof(ch->ast->exten));
                                        ast_cdr_update(ch->ast);
                                }
                                
@@ -4029,138 +3876,147 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                        }
                }
        }
-       break;
+               break;
        case EVENT_SETUP:
        {
-               struct chan_list *ch=find_chan_by_bc(cl_te, bc);
+               struct chan_list *ch = find_chan_by_bc(cl_te, bc);
+               int msn_valid = misdn_cfg_is_msn_valid(bc->port, bc->dad);
+               struct ast_channel *chan;
+               int exceed;
+               int pres,screen;
+               int ai;
+               int im;
+
                if (ch) {
                        switch (ch->state) {
-                               case MISDN_NOTHING:
-                               ch=NULL;
+                       case MISDN_NOTHING:
+                               ch = NULL;
                                break;
-                               default:
+                       default:
                                chan_misdn_log(1, bc->port, " --> Ignoring Call we have already one\n");
                                return RESPONSE_IGNORE_SETUP_WITHOUT_CLOSE; /*  Ignore MSNs which are not in our List */
                        }
                }
-       }
 
-       int msn_valid = misdn_cfg_is_msn_valid(bc->port, bc->dad);
-       if (!bc->nt && ! msn_valid) {
-               chan_misdn_log(1, bc->port, " --> Ignoring Call, its not in our MSN List\n");
-               return RESPONSE_IGNORE_SETUP; /*  Ignore MSNs which are not in our List */
-       }
+               if (!bc->nt && ! msn_valid) {
+                       chan_misdn_log(1, bc->port, " --> Ignoring Call, its not in our MSN List\n");
+                       return RESPONSE_IGNORE_SETUP; /*  Ignore MSNs which are not in our List */
+               }
 
-       
-       if (bc->cw) {
-               chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
-               int cause;
-               misdn_cfg_get( bc->port, MISDN_CFG_REJECT_CAUSE, &cause, sizeof(cause));
-               bc->out_cause=cause?cause:16;
-               return RESPONSE_RELEASE_SETUP;
-       }
+               if (bc->cw) {
+                       int cause;
+                       chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
+                       misdn_cfg_get(bc->port, MISDN_CFG_REJECT_CAUSE, &cause, sizeof(cause));
+                       bc->out_cause = cause ? cause : 16;
+                       return RESPONSE_RELEASE_SETUP;
+               }
 
-       print_bearer(bc);
+               print_bearer(bc);
     
-       {
-               int msn_valid = misdn_cfg_is_msn_valid(bc->port, bc->dad);
                if (!bc->nt && ! msn_valid) {
                        chan_misdn_log(1, bc->port, " --> Ignoring Call, its not in our MSN List\n");
                        return RESPONSE_IGNORE_SETUP; /*  Ignore MSNs which are not in our List */
                }
 
                if (bc->cw) {
-                       chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
                        int cause;
-                       misdn_cfg_get( bc->port, MISDN_CFG_REJECT_CAUSE, &cause, sizeof(cause));
-                       bc->out_cause=cause?cause:16;
+                       chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
+                       misdn_cfg_get(bc->port, MISDN_CFG_REJECT_CAUSE, &cause, sizeof(cause));
+                       bc->out_cause = cause ? cause : 16;
                        return RESPONSE_RELEASE_SETUP;
                }
 
                print_bearer(bc);
 
-               struct chan_list *ch=init_chan_list(ORG_MISDN);
-               struct ast_channel *chan;
-               int exceed;
+               ch = init_chan_list(ORG_MISDN);
 
-               if (!ch) { chan_misdn_log(-1, bc->port, "cb_events: malloc for chan_list failed!\n"); return 0;}
+               if (!ch) {
+                       chan_misdn_log(-1, bc->port, "cb_events: malloc for chan_list failed!\n");
+                       return 0;
+               }
 
                ch->bc = bc;
-               ch->l3id=bc->l3_id;
-               ch->addr=bc->addr;
+               ch->l3id = bc->l3_id;
+               ch->addr = bc->addr;
                ch->originator = ORG_MISDN;
 
-               chan=misdn_new(ch, AST_STATE_RESERVED,bc->dad, bc->oad, AST_FORMAT_ALAW, bc->port, bc->channel);
+               chan = misdn_new(ch, AST_STATE_RESERVED, bc->dad, bc->oad, AST_FORMAT_ALAW, bc->port, bc->channel);
                ch->ast = chan;
 
-               if ((exceed=add_in_calls(bc->port))) {
+               if ((exceed = add_in_calls(bc->port))) {
                        char tmp[16];
-                       sprintf(tmp,"%d",exceed);
-                       pbx_builtin_setvar_helper(chan,"MAX_OVERFLOW",tmp);
+                       snprintf(tmp, sizeof(tmp), "%d", exceed);
+                       pbx_builtin_setvar_helper(chan, "MAX_OVERFLOW", tmp);
                }
 
                read_config(ch, ORG_MISDN);
 
                export_ch(chan, bc, ch);
 
-               ch->ast->rings=1;
+               ch->ast->rings = 1;
                ast_setstate(ch->ast, AST_STATE_RINGING);
 
-               int pres,screen;
-
                switch (bc->pres) {
-                       case 1:
-                               pres=AST_PRES_RESTRICTED; chan_misdn_log(2,bc->port," --> PRES: Restricted (1)\n");
-                               break;
-                       case 2:
-                               pres=AST_PRES_UNAVAILABLE; chan_misdn_log(2,bc->port," --> PRES: Restricted (2)\n");
-                               break;
-                       default:
-                               pres=AST_PRES_ALLOWED; chan_misdn_log(2,bc->port," --> PRES: Restricted (%d)\n", bc->pres);
+               case 1:
+                       pres = AST_PRES_RESTRICTED;
+                       chan_misdn_log(2, bc->port, " --> PRES: Restricted (1)\n");
+                       break;
+               case 2:
+                       pres = AST_PRES_UNAVAILABLE;
+                       chan_misdn_log(2, bc->port, " --> PRES: Restricted (2)\n");
+                       break;
+               default:
+                       pres = AST_PRES_ALLOWED;
+                       chan_misdn_log(2, bc->port, " --> PRES: Restricted (%d)\n", bc->pres);
                }
 
                switch (bc->screen) {
-                       case 0:
-                       &