ast_format_cap_get_names: To display all formats, the buffer was increased.
authorAlexander Traud <pabstraud@compuserve.com>
Mon, 9 Nov 2015 09:01:41 +0000 (10:01 +0100)
committerAlexander Traud <pabstraud@compuserve.com>
Mon, 9 Nov 2015 15:58:52 +0000 (16:58 +0100)
ASTERISK-25533 #close

Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a

27 files changed:
addons/chan_mobile.c
addons/chan_ooh323.c
apps/app_dumpchan.c
bridges/bridge_native_rtp.c
channels/chan_alsa.c
channels/chan_console.c
channels/chan_iax2.c
channels/chan_mgcp.c
channels/chan_motif.c
channels/chan_nbs.c
channels/chan_oss.c
channels/chan_phone.c
channels/chan_pjsip.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_unistim.c
channels/chan_vpb.cc
funcs/func_channel.c
include/asterisk/format_cap.h
main/channel.c
main/cli.c
main/file.c
main/manager.c
main/sorcery.c
res/res_pjsip_sdp_rtp.c
tests/test_config.c
tests/test_format_cap.c

index 26056f4..64d53b7 100644 (file)
@@ -902,7 +902,7 @@ static struct ast_channel *mbl_request(const char *type, struct ast_format_cap *
        }
 
        if (ast_format_cap_iscompatible_format(cap, DEVICE_FRAME_FORMAT) == AST_FORMAT_CMP_NOT_EQUAL) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_WARNING, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &codec_buf));
                *cause = AST_CAUSE_FACILITY_NOT_IMPLEMENTED;
                return NULL;
index aa9cbaf..7e50bbf 100644 (file)
@@ -576,7 +576,7 @@ static struct ast_channel *ooh323_request(const char *type, struct ast_format_ca
                const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause)
 
 {
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_channel *chan = NULL;
        struct ooh323_pvt *p = NULL;
        struct ooh323_peer *peer = NULL;
@@ -1192,7 +1192,7 @@ static int ooh323_write(struct ast_channel *ast, struct ast_frame *f)
 
                        if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
                                if (ast_format_cap_count(ast_channel_nativeformats(ast))) {
-                                       struct ast_str *codec_buf = ast_str_alloca(64);
+                                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                                        ast_log(LOG_WARNING,
                                                        "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
                                                        ast_format_get_name(f->subclass.format),
@@ -1545,7 +1545,7 @@ void ooh323_set_write_format(ooCallData *call, struct ast_format *fmt, int txfra
                        return;
                }
                if (gH323Debug) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                        ast_verb(0, "Writeformat before update %s/%s\n", 
                          ast_format_get_name(ast_channel_writeformat(p->owner)),
                          ast_format_cap_get_names(ast_channel_nativeformats(p->owner), &codec_buf));
@@ -2114,7 +2114,7 @@ int onNewCallCreated(ooCallData *call)
                }
 
                if (gH323Debug) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_verb(0, " Outgoing call %s(%s) - Codec prefs - %s\n", 
                                p->username?p->username:"NULL", call->callToken,
@@ -3231,7 +3231,7 @@ static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struc
 static char *handle_cli_ooh323_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct ooh323_peer *prev = NULL, *peer = NULL;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
    char ip_port[30];
 #define FORMAT  "%-15.15s  %-15.15s  %-23.23s  %-s\n"
 
@@ -3370,7 +3370,7 @@ static char *handle_cli_ooh323_show_user(struct ast_cli_entry *e, int cmd, struc
 static char *handle_cli_ooh323_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct ooh323_user *prev = NULL, *user = NULL;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 #define FORMAT1  "%-15.15s  %-15.15s  %-15.15s  %-s\n"
 
        switch (cmd) {
@@ -3504,7 +3504,7 @@ static char *handle_cli_ooh323_show_gk(struct ast_cli_entry *e, int cmd, struct
 static char *handle_cli_ooh323_show_config(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        char value[FORMAT_STRING_SIZE];
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        ooAliases *pAlias = NULL, *pAliasNext = NULL;;
 
        switch (cmd) {
index 93a6506..8b32b93 100644 (file)
@@ -72,7 +72,7 @@ static int serialize_showchan(struct ast_channel *c, char *buf, size_t size)
 {
        long elapsed_seconds = 0;
        int hour = 0, min = 0, sec = 0;
-       struct ast_str *format_buf = ast_str_alloca(64);
+       struct ast_str *format_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        char cgrp[256];
        char pgrp[256];
        struct ast_str *write_transpath = ast_str_alloca(256);
index 606a43a..6c7c1cd 100644 (file)
@@ -387,8 +387,8 @@ static int native_rtp_bridge_compatible(struct ast_bridge *bridge)
                glue1->get_codec(bc1->chan, cap1);
        }
        if (ast_format_cap_count(cap0) != 0 && ast_format_cap_count(cap1) != 0 && !ast_format_cap_iscompatible(cap0, cap1)) {
-               struct ast_str *codec_buf0 = ast_str_alloca(64);
-               struct ast_str *codec_buf1 = ast_str_alloca(64);
+               struct ast_str *codec_buf0 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *codec_buf1 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_debug(1, "Channel codec0 = %s is not codec1 = %s, cannot native bridge in RTP.\n",
                        ast_format_cap_get_names(cap0, &codec_buf0), ast_format_cap_get_names(cap1, &codec_buf1));
                return 0;
index 9441800..0e2b257 100644 (file)
@@ -620,7 +620,7 @@ static struct ast_channel *alsa_request(const char *type, struct ast_format_cap
        struct ast_channel *tmp = NULL;
 
        if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE, "Asked to get a channel of format '%s'\n", ast_format_cap_get_names(cap, &codec_buf));
                return NULL;
        }
index a8dbc97..9fdecd7 100644 (file)
@@ -479,7 +479,7 @@ static struct ast_channel *console_request(const char *type, struct ast_format_c
        }
 
        if (!(ast_format_cap_iscompatible(cap, console_tech.capabilities))) {
-               struct ast_str *cap_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE, "Channel requested with unsupported format(s): '%s'\n",
                        ast_format_cap_get_names(cap, &cap_buf));
                goto return_unref;
index da6bec7..dd1bc4c 100644 (file)
@@ -3803,7 +3803,7 @@ static char *handle_cli_iax2_show_peer(struct ast_cli_entry *e, int cmd, struct
        char status[30];
        char cbuf[256];
        struct iax2_peer *peer;
-       struct ast_str *codec_buf = ast_str_alloca(256);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_str *encmethods = ast_str_alloca(256);
        int load_realtime = 0;
 
@@ -5576,8 +5576,8 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha
                        return AST_BRIDGE_FAILED_NOWARN;
                }
                if (!(ast_format_cap_identical(ast_channel_nativeformats(c0), ast_channel_nativeformats(c1)))) {
-                       struct ast_str *c0_buf = ast_str_alloca(64);
-                       struct ast_str *c1_buf = ast_str_alloca(64);
+                       struct ast_str *c0_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                       struct ast_str *c1_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_verb(3, "Operating with different codecs [%s] [%s] , can't native bridge...\n",
                                ast_format_cap_get_names(ast_channel_nativeformats(c0), &c0_buf),
@@ -10801,9 +10801,9 @@ static int socket_process_helper(struct iax2_thread *thread)
                                                                        break;
                                                                }
                                                                if (authdebug) {
-                                                                       struct ast_str *peer_buf = ast_str_alloca(64);
-                                                                       struct ast_str *cap_buf = ast_str_alloca(64);
-                                                                       struct ast_str *peer_form_buf = ast_str_alloca(64);
+                                                                       struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                                       struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                                        if (ast_test_flag64(iaxs[fr->callno], IAX_CODEC_NOCAP)) {
                                                                                ast_log(LOG_NOTICE, "Rejected connect attempt from %s, requested '%s' incompatible with our capability '%s'.\n",
@@ -10848,9 +10848,9 @@ static int socket_process_helper(struct iax2_thread *thread)
                                                                }
 
                                                                if (!format) {
-                                                                       struct ast_str *peer_buf = ast_str_alloca(64);
-                                                                       struct ast_str *cap_buf = ast_str_alloca(64);
-                                                                       struct ast_str *peer_form_buf = ast_str_alloca(64);
+                                                                       struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                                       struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                                        memset(&ied0, 0, sizeof(ied0));
                                                                        iax_ie_append_str(&ied0, IAX_IE_CAUSE, "Unable to negotiate codec");
@@ -11028,8 +11028,8 @@ static int socket_process_helper(struct iax2_thread *thread)
                                                break;
                                        }
                                        if (authdebug) {
-                                               struct ast_str *peer_buf = ast_str_alloca(64);
-                                               struct ast_str *cap_buf = ast_str_alloca(64);
+                                               struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                ast_log(LOG_NOTICE, "Rejected call to %s, format %s incompatible with our capability %s.\n",
                                                        ast_sockaddr_stringify(&addr),
@@ -11042,7 +11042,7 @@ static int socket_process_helper(struct iax2_thread *thread)
                                        ast_set_flag(&iaxs[fr->callno]->state, IAX_STATE_STARTED);
                                        iax2_lock_owner(fr->callno);
                                        if (iaxs[fr->callno] && iaxs[fr->callno]->owner && native) {
-                                               struct ast_str *cap_buf = ast_str_alloca(64);
+                                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                /* Switch us to use a compatible format */
                                                iax2_codec_pref_best_bitfield2cap(
@@ -11246,9 +11246,9 @@ static int socket_process_helper(struct iax2_thread *thread)
                                                iax2_codec_pref_string(&iaxs[fr->callno]->prefs, host_pref_buf, sizeof(host_pref_buf) - 1);
                                        }
                                        if (!format) {
-                                               struct ast_str *cap_buf = ast_str_alloca(64);
-                                               struct ast_str *peer_buf = ast_str_alloca(64);
-                                               struct ast_str *peer_form_buf = ast_str_alloca(64);
+                                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                               struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                               struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                if(!ast_test_flag64(iaxs[fr->callno], IAX_CODEC_NOCAP)) {
                                                        ast_debug(1, "We don't do requested format %s, falling back to peer capability '%s'\n",
@@ -11309,9 +11309,9 @@ static int socket_process_helper(struct iax2_thread *thread)
                                                                }
                                                        }
                                                        if (!format) {
-                                                               struct ast_str *cap_buf = ast_str_alloca(64);
-                                                               struct ast_str *peer_buf = ast_str_alloca(64);
-                                                               struct ast_str *peer_form_buf = ast_str_alloca(64);
+                                                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                               struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                                                               struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                                                ast_log(LOG_ERROR, "No best format in %s???\n",
                                                                        iax2_getformatname_multiple(iaxs[fr->callno]->peercapability & iaxs[fr->callno]->capability, &cap_buf));
@@ -11435,7 +11435,7 @@ immediatedial:
                                                        break;
                                                }
                                        } else {
-                                               struct ast_str *cap_buf = ast_str_alloca(64);
+                                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                                                ast_set_flag(&iaxs[fr->callno]->state, IAX_STATE_STARTED);
                                                ast_verb(3, "Accepting DIAL from %s, formats = %s\n",
                                                                ast_sockaddr_stringify(&addr),
@@ -12514,8 +12514,8 @@ static struct ast_channel *iax2_request(const char *type, struct ast_format_cap
 
                        res = ast_translator_best_choice(cap, ast_channel_nativeformats(c), &best_fmt_cap, &best_fmt_native);
                        if (res < 0) {
-                               struct ast_str *native_cap_buf = ast_str_alloca(256);
-                               struct ast_str *cap_buf = ast_str_alloca(256);
+                               struct ast_str *native_cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                ast_log(LOG_WARNING, "Unable to create translator path for %s to %s on %s\n",
                                        ast_format_cap_get_names(ast_channel_nativeformats(c), &native_cap_buf),
@@ -14374,7 +14374,7 @@ static int function_iaxpeer(struct ast_channel *chan, const char *cmd, char *dat
        } else  if (!strcasecmp(colname, "callerid_num")) {
                ast_copy_string(buf, peer->cid_num, len);
        } else  if (!strcasecmp(colname, "codecs")) {
-               struct ast_str *codec_buf = ast_str_alloca(256);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                iax2_getformatname_multiple(peer->capability, &codec_buf);
                ast_copy_string(buf, ast_str_buffer(codec_buf), len);
index 0210e8a..8714ddb 100644 (file)
@@ -1253,7 +1253,7 @@ static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame)
                }
        } else {
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *cap_buf = ast_str_alloca(64);
+                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
                                ast_format_get_name(frame->subclass.format),
@@ -1986,9 +1986,9 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
        int codec, codec_count=0;
        int iterator;
        struct mgcp_endpoint *p = sub->parent;
-       struct ast_str *global_buf = ast_str_alloca(64);
-       struct ast_str *peer_buf = ast_str_alloca(64);
-       struct ast_str *pvt_buf = ast_str_alloca(64);
+       struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+       struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+       struct ast_str *pvt_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        /* Get codec and RTP info from SDP */
        m = get_sdp(req, "m");
@@ -3971,7 +3971,7 @@ static struct ast_channel *mgcp_request(const char *type, struct ast_format_cap
        char tmp[256];
 
        if (!(ast_format_cap_iscompatible(cap, global_capability))) {
-               struct ast_str *cap_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n",
                        ast_format_cap_get_names(cap, &cap_buf));
                /*return NULL;*/
index 0851bf0..15a7b4d 100644 (file)
@@ -1702,7 +1702,7 @@ static int jingle_write(struct ast_channel *ast, struct ast_frame *frame)
        switch (frame->frametype) {
        case AST_FRAME_VOICE:
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_log(LOG_WARNING,
                                "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
index c23eecd..d50defe 100644 (file)
@@ -232,7 +232,7 @@ static struct ast_channel *nbs_request(const char *type, struct ast_format_cap *
        struct ast_channel *tmp = NULL;
 
        if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
-               struct ast_str *cap_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n",
                        ast_format_cap_get_names(cap, &cap_buf));
index 0eb777a..94de58d 100644 (file)
@@ -863,7 +863,7 @@ static struct ast_channel *oss_request(const char *type, struct ast_format_cap *
                return NULL;
        }
        if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE, "Format %s unsupported\n", ast_format_cap_get_names(cap, &codec_buf));
                return NULL;
        }
index 6d790fe..b7f694f 100644 (file)
@@ -1282,7 +1282,7 @@ static struct ast_channel *phone_request(const char *type, struct ast_format_cap
        restart_monitor();
        if (tmp == NULL) {
                if (!(ast_format_cap_iscompatible(cap, phone_tech.capabilities))) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                        ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n",
                                ast_format_cap_get_names(cap, &codec_buf));
                        return NULL;
index d72a25b..c98be35 100644 (file)
@@ -673,7 +673,7 @@ static int chan_pjsip_write(struct ast_channel *ast, struct ast_frame *frame)
                        return 0;
                }
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *cap_buf = ast_str_alloca(128);
+                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                        struct ast_str *write_transpath = ast_str_alloca(256);
                        struct ast_str *read_transpath = ast_str_alloca(256);
 
index 0fd9f7d..5a88bb4 100644 (file)
@@ -7213,7 +7213,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame)
        switch (frame->frametype) {
        case AST_FRAME_VOICE:
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                        ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s read/write = %s/%s\n",
                                ast_format_get_name(frame->subclass.format),
                                ast_format_cap_get_names(ast_channel_nativeformats(ast), &codec_buf),
@@ -7850,7 +7850,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
        struct ast_variable *v = NULL;
        struct ast_format *fmt;
        struct ast_format_cap *what = NULL; /* SHALLOW COPY DO NOT DESTROY! */
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        int needvideo = 0;
        int needtext = 0;
        char *exten;
@@ -9911,7 +9911,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
        int debug = sip_debug_test_pvt(p);
 
        /* START UNKNOWN */
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_format *tmp_fmt;
        /* END UNKNOWN */
 
@@ -10570,11 +10570,11 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
 
        if (debug) {
                /* shame on whoever coded this.... */
-               struct ast_str *cap_buf = ast_str_alloca(64);
-               struct ast_str *peer_buf = ast_str_alloca(64);
-               struct ast_str *vpeer_buf = ast_str_alloca(64);
-               struct ast_str *tpeer_buf = ast_str_alloca(64);
-               struct ast_str *joint_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *vpeer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *tpeer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *joint_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_verbose("Capabilities: us - %s, peer - audio=%s/video=%s/text=%s, combined - %s\n",
                            ast_format_cap_get_names(p->caps, &cap_buf),
@@ -10781,8 +10781,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
                unsigned int framing;
 
                if (debug) {
-                       struct ast_str *cap_buf = ast_str_alloca(64);
-                       struct ast_str *joint_buf = ast_str_alloca(64);
+                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                       struct ast_str *joint_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_debug(1, "Setting native formats after processing SDP. peer joint formats %s, old nativeformats %s\n",
                                ast_format_cap_get_names(p->jointcaps, &joint_buf),
@@ -13116,7 +13116,7 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int
        int min_video_packet_size = 0;
        int min_text_packet_size = 0;
 
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        /* Set the SDP session name */
        snprintf(subject, sizeof(subject), "s=%s\r\n", ast_strlen_zero(global_sdpsession) ? "-" : global_sdpsession);
@@ -20298,7 +20298,7 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
        char status[30] = "";
        char cbuf[256];
        struct sip_peer *peer;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_variable *v;
        int x = 0, load_realtime;
        int realtimepeers;
@@ -20944,7 +20944,7 @@ static char *sip_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_
 {
        int realtimepeers;
        int realtimeregs;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        const char *msg;        /* temporary msg pointer */
        struct sip_auth_container *credentials;
 
@@ -21265,7 +21265,7 @@ static int show_channels_cb(void *__cur, void *__arg, int flags)
        if (cur->subscribed == NONE && !arg->subscriptions) {
                /* set if SIP transfer in progress */
                const char *referstatus = cur->refer ? referstatus2str(cur->refer->status) : "";
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_cli(arg->fd, FORMAT, ast_sockaddr_stringify_addr(dst),
                                S_OR(cur->username, S_OR(cur->cid_num, "(None)")),
@@ -21511,7 +21511,7 @@ static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 
                if (!strncasecmp(cur->callid, a->argv[3], len)) {
                        struct ast_str *strbuf;
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_cli(a->fd, "\n");
                        if (cur->subscribed != NONE) {
@@ -22470,7 +22470,7 @@ static int function_sippeer(struct ast_channel *chan, const char *cmd, char *dat
        } else  if (!strcasecmp(colname, "callerid_num")) {
                ast_copy_string(buf, peer->cid_num, len);
        } else  if (!strcasecmp(colname, "codecs")) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_format_cap_get_names(peer->caps, &codec_buf);
                ast_copy_string(buf, ast_str_buffer(codec_buf), len);
        } else if (!strcasecmp(colname, "encryption")) {
@@ -29614,8 +29614,8 @@ static struct ast_channel *sip_request_call(const char *type, struct ast_format_
        struct ast_channel *tmpc = NULL;
        char *ext = NULL, *host;
        char tmp[256];
-       struct ast_str *codec_buf = ast_str_alloca(64);
-       struct ast_str *cap_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        char *dnid;
        char *secret = NULL;
        char *md5secret = NULL;
index 6e59e01..6f56f73 100644 (file)
@@ -4176,7 +4176,7 @@ static char *_skinny_show_device(int type, int fd, struct mansession *s, const s
        struct skinny_speeddial *sd;
        struct skinny_addon *sa;
        struct skinny_serviceurl *surl;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        if (argc < 4) {
                return CLI_SHOWUSAGE;
@@ -4425,7 +4425,7 @@ static char *_skinny_show_line(int type, int fd, struct mansession *s, const str
        struct skinny_device *d;
        struct skinny_line *l;
        struct skinny_subline *subline;
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        char group_buf[256];
        char cbuf[256];
 
@@ -5075,7 +5075,7 @@ static int skinny_write(struct ast_channel *ast, struct ast_frame *frame)
                }
        } else {
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *codec_buf = ast_str_alloca(64);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                        ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
                                ast_format_get_name(frame->subclass.format),
                                ast_format_cap_get_names(ast_channel_nativeformats(ast), &codec_buf),
@@ -5351,7 +5351,7 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli
        struct ast_format *tmpfmt;
        struct ast_format_cap *caps;
 #ifdef AST_DEVMODE
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 #endif
 
        if (!l->device || !l->device->session) {
@@ -6638,7 +6638,7 @@ static int handle_capabilities_res_message(struct skinny_req *req, struct skinny
        struct ast_format_cap *codecs = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
        int i;
 #ifdef AST_DEVMODE
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 #endif
        
 
@@ -7681,7 +7681,7 @@ static struct ast_channel *skinny_request(const char *type, struct ast_format_ca
        char tmp[256];
 
        if (!(ast_format_cap_has_type(cap, AST_MEDIA_TYPE_AUDIO))) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &codec_buf));
                return NULL;
        }
index 874f6b2..c96a9c0 100644 (file)
@@ -2890,7 +2890,7 @@ static void start_rtp(struct unistim_subchannel *sub)
        ast_rtp_instance_set_remote_address(sub->rtp, &sin_tmp);
        if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), ast_channel_readformat(sub->owner)) == AST_FORMAT_CMP_NOT_EQUAL) {
                struct ast_format *tmpfmt;
-               struct ast_str *cap_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                tmpfmt = ast_format_cap_get_format(ast_channel_nativeformats(sub->owner), 0);
                ast_log(LOG_WARNING,
@@ -5143,7 +5143,7 @@ static struct ast_frame *unistim_rtp_read(const struct ast_channel *ast,
                /* We already hold the channel lock */
                if (f->frametype == AST_FRAME_VOICE) {
                        if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                               struct ast_str *cap_buf = ast_str_alloca(64);
+                               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                                struct ast_format_cap *caps;
 
                                ast_debug(1,
@@ -5193,7 +5193,7 @@ static int unistim_write(struct ast_channel *ast, struct ast_frame *frame)
                }
        } else {
                if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
-                       struct ast_str *cap_buf = ast_str_alloca(64);
+                       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_log(LOG_WARNING,
                                        "Asked to transmit frame type %s, while native formats is %s (read/write = (%s/%s)\n",
@@ -5724,9 +5724,9 @@ static struct ast_channel *unistim_new(struct unistim_subchannel *sub, int state
        tmpfmt = ast_format_cap_get_format(ast_channel_nativeformats(tmp), 0);
 
        if (unistimdebug) {
-               struct ast_str *native_buf = ast_str_alloca(64);
-               struct ast_str *cap_buf = ast_str_alloca(64);
-               struct ast_str *global_buf = ast_str_alloca(64);
+               struct ast_str *native_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_verb(0, "Best codec = %s from nativeformats %s (line cap=%s global=%s)\n",
                        ast_format_get_name(tmpfmt),
@@ -5939,8 +5939,8 @@ static struct ast_channel *unistim_request(const char *type, struct ast_format_c
        char tmp[256];
 
        if (!(ast_format_cap_iscompatible(cap, global_cap))) {
-               struct ast_str *cap_buf = ast_str_alloca(64);
-               struct ast_str *global_buf = ast_str_alloca(64);
+               struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_NOTICE,
                                "Asked to get a channel of unsupported format %s while capability is %s\n",
                                ast_format_cap_get_names(cap, &cap_buf),
@@ -6015,7 +6015,7 @@ static char *unistim_show_info(struct ast_cli_entry *e, int cmd, struct ast_cli_
        struct unistim_line *line;
        struct unistim_subchannel *sub;
        struct unistimsession *s;
-       struct ast_str *cap_buf = ast_str_alloca(64);
+       struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        switch (cmd) {
        case CLI_INIT:
index 7cdcf30..1f4b861 100644 (file)
@@ -2510,7 +2510,7 @@ static struct ast_channel *vpb_request(const char *type, struct ast_format_cap *
        if (!(ast_format_cap_iscompatible_format(cap, ast_format_slin))) {
                struct ast_str *buf;
 
-               buf = ast_str_create(256);
+               buf = ast_str_create(AST_FORMAT_CAP_NAMES_LEN);
                if (!buf) {
                        return NULL;
                }
index b051d89..afe9796 100644 (file)
@@ -446,7 +446,7 @@ static int func_channel_read(struct ast_channel *chan, const char *function,
        if (!strcasecmp(data, "audionativeformat")) {
                tmpcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
                if (tmpcap) {
-                       struct ast_str *codec_buf = ast_str_alloca(128);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_channel_lock(chan);
                        ast_format_cap_append_from_cap(tmpcap, ast_channel_nativeformats(chan), AST_MEDIA_TYPE_AUDIO);
@@ -457,7 +457,7 @@ static int func_channel_read(struct ast_channel *chan, const char *function,
        } else if (!strcasecmp(data, "videonativeformat")) {
                tmpcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
                if (tmpcap) {
-                       struct ast_str *codec_buf = ast_str_alloca(128);
+                       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_channel_lock(chan);
                        ast_format_cap_append_from_cap(tmpcap, ast_channel_nativeformats(chan), AST_MEDIA_TYPE_VIDEO);
index e422cc6..8b69e08 100644 (file)
@@ -310,6 +310,11 @@ int ast_format_cap_has_type(const struct ast_format_cap *cap, enum ast_media_typ
  */
 const char *ast_format_cap_get_names(struct ast_format_cap *cap, struct ast_str **buf);
 
+#ifndef AST_FORMAT_CAP_NAMES_LEN
+/*! Buffer size for callers of ast_format_cap_get_names to allocate. */
+#define AST_FORMAT_CAP_NAMES_LEN 384
+#endif
+
 /*!
  * \brief Determine if a format cap has no formats in it.
  *
index 3e2636f..013d2e2 100644 (file)
@@ -340,7 +340,7 @@ static char *complete_channeltypes(struct ast_cli_args *a)
 static char *handle_cli_core_show_channeltype(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct chanlist *cl = NULL;
-       struct ast_str *codec_buf = ast_str_alloca(256);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        switch (cmd) {
        case CLI_INIT:
@@ -5094,7 +5094,7 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
                        f = fr;
                } else {
                        if (ast_format_cmp(ast_channel_writeformat(chan), fr->subclass.format) != AST_FORMAT_CMP_EQUAL) {
-                               struct ast_str *codec_buf = ast_str_alloca(256);
+                               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                /*
                                 * We are not setup to write this frame.  Things may have changed
@@ -5435,8 +5435,8 @@ static int set_format(struct ast_channel *chan, struct ast_format_cap *cap_set,
                res = ast_translator_best_choice(cap_native, cap_set, &best_native_fmt, &best_set_fmt);
        }
        if (res < 0) {
-               struct ast_str *codec_native = ast_str_alloca(256);
-               struct ast_str *codec_set = ast_str_alloca(256);
+               struct ast_str *codec_native = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *codec_set = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_format_cap_get_names(cap_native, &codec_native);
                ast_channel_unlock(chan);
@@ -5978,8 +5978,8 @@ struct ast_channel *ast_request(const char *type, struct ast_format_cap *request
                        res = ast_translator_best_choice(tmp_cap, chan->tech->capabilities, &tmp_fmt, &best_audio_fmt);
                        ao2_ref(tmp_cap, -1);
                        if (res < 0) {
-                               struct ast_str *tech_codecs = ast_str_alloca(64);
-                               struct ast_str *request_codecs = ast_str_alloca(64);
+                               struct ast_str *tech_codecs = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                               struct ast_str *request_codecs = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                                ast_log(LOG_WARNING, "No translator path exists for channel type %s (native %s) to %s\n", type,
                                        ast_format_cap_get_names(chan->tech->capabilities, &tech_codecs),
index e59a856..b3d4cac 100644 (file)
@@ -1528,7 +1528,7 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
        struct ast_var_t *var;
        struct ast_str *write_transpath = ast_str_alloca(256);
        struct ast_str *read_transpath = ast_str_alloca(256);
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_bridge *bridge;
        ast_callid callid;
        char callid_buf[32];
index bfad6e0..f0f826a 100644 (file)
@@ -1091,7 +1091,7 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p
 
        fs = ast_openstream(chan, filename, preflang);
        if (!fs) {
-               struct ast_str *codec_buf = ast_str_alloca(64);
+               struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
                ast_log(LOG_WARNING, "Unable to open %s (format %s): %s\n",
                        filename, ast_format_cap_get_names(ast_channel_nativeformats(chan), &codec_buf), strerror(errno));
                return -1;
index 6e9ae00..d6aadf4 100644 (file)
@@ -4343,7 +4343,7 @@ static void generate_status(struct mansession *s, struct ast_channel *chan, char
        RAII_VAR(struct ast_str *, variable_str, NULL, ast_free);
        struct ast_str *write_transpath = ast_str_alloca(256);
        struct ast_str *read_transpath = ast_str_alloca(256);
-       struct ast_str *codec_buf = ast_str_alloca(128);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_party_id effective_id;
        int i;
        RAII_VAR(struct ast_channel_snapshot *, snapshot,
index f9f7c38..b751b9f 100644 (file)
@@ -307,7 +307,7 @@ static int chararray_handler_fn(const void *obj, const intptr_t *args, char **bu
 
 static int codec_handler_fn(const void *obj, const intptr_t *args, char **buf)
 {
-       struct ast_str *codec_buf = ast_str_alloca(64);
+       struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
        struct ast_format_cap **cap = (struct ast_format_cap **)(obj + args[0]);
        return !(*buf = ast_strdup(ast_format_cap_get_names(*cap, &codec_buf)));
 }
index a66aebb..7c1e604 100644 (file)
@@ -323,8 +323,8 @@ static int set_caps(struct ast_sip_session *session,
        /* get the joint capabilities between peer and endpoint */
        ast_format_cap_get_compatible(caps, peer, joint);
        if (!ast_format_cap_count(joint)) {
-               struct ast_str *usbuf = ast_str_alloca(256);
-               struct ast_str *thembuf = ast_str_alloca(256);
+               struct ast_str *usbuf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+               struct ast_str *thembuf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                ast_rtp_codecs_payloads_destroy(&codecs);
                ast_log(LOG_NOTICE, "No joint capabilities for '%s' media stream between our configuration(%s) and incoming SDP(%s)\n",
index 12c75bf..bbfec0d 100644 (file)
@@ -1492,8 +1492,8 @@ AST_TEST_DEFINE(config_options_test)
                        res = AST_TEST_FAIL;
                }
                if (!ast_format_cap_identical(arr[x]->codeccapopt, control->codeccapopt)) {
-                       struct ast_str *codec_buf1 = ast_str_alloca(64);
-                       struct ast_str *codec_buf2 = ast_str_alloca(64);
+                       struct ast_str *codec_buf1 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
+                       struct ast_str *codec_buf2 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
                        ast_test_status_update(test, "format did not match: '%s' vs '%s' on loop %d\n",
                                ast_format_cap_get_names(arr[x]->codeccapopt, &codec_buf1),
index 4d810bf..b62f6e5 100644 (file)
@@ -1079,7 +1079,7 @@ AST_TEST_DEFINE(format_cap_get_names)
        RAII_VAR(struct ast_format *, ulaw_format, NULL, ao2_cleanup);
        RAII_VAR(struct ast_codec *, alaw, NULL, ao2_cleanup);
        RAII_VAR(struct ast_format *, alaw_format, NULL, ao2_cleanup);
-       struct ast_str *buffer = ast_str_alloca(128);
+       struct ast_str *buffer = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
 
        switch (cmd) {
        case TEST_INIT: