mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 11:58:40 +00:00
Recorded merge of revisions 193756 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r193756 | tilghman | 2009-05-11 17:50:47 -0500 (Mon, 11 May 2009) | 25 lines Recorded merge of revisions 193755 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r193755 | tilghman | 2009-05-11 17:48:20 -0500 (Mon, 11 May 2009) | 18 lines Move 300 bytes around on the stack, to make more room for an extension buffer. This allows more concurrent extensions to be copied for a single voicemail, without creating a possibility of upsetting existing users, where a dialplan could run out of stack space where it had run fine before. Alternatively, we could have allocated off the heap, but that is a larger change and would have increased the chance for instability introduced by this change. This is really solved starting in 1.6.0.11, as the use of an ast_str buffer allows an unlimited number of extensions (up to available memory). We additionally create a new warning message when the buffer length is exceeded, permitting administrators to see an issue after the fact, whereas previously the list was silently truncated. (closes issue #14739) Reported by: p_lindheimer Patches: 20090417__bug14739.diff.txt uploaded by tilghman (license 14) Tested by: p_lindheimer ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@193781 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -227,6 +227,8 @@ static AST_LIST_HEAD_STATIC(vmstates, vmstate);
|
|||||||
#define ERROR_MAILBOX_FULL -200
|
#define ERROR_MAILBOX_FULL -200
|
||||||
|
|
||||||
|
|
||||||
|
AST_THREADSTORAGE(voicemail_extension_list);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NEW_FOLDER,
|
NEW_FOLDER,
|
||||||
OLD_FOLDER,
|
OLD_FOLDER,
|
||||||
@@ -4289,14 +4291,15 @@ static int has_voicemail(const char *mailbox, const char *folder)
|
|||||||
char fmt[80];
|
char fmt[80];
|
||||||
char *context;
|
char *context;
|
||||||
char ecodes[17] = "#";
|
char ecodes[17] = "#";
|
||||||
char tmp[1024] = "", *tmpptr;
|
char *tmpptr;
|
||||||
|
struct ast_str *tmp = ast_str_thread_get(&voicemail_extension_list, 16);
|
||||||
struct ast_vm_user *vmu;
|
struct ast_vm_user *vmu;
|
||||||
struct ast_vm_user svm;
|
struct ast_vm_user svm;
|
||||||
const char *category = NULL, *code, *alldtmf = "0123456789ABCD*#";
|
const char *category = NULL, *code, *alldtmf = "0123456789ABCD*#";
|
||||||
|
|
||||||
ast_copy_string(tmp, ext, sizeof(tmp));
|
ast_str_set(&tmp, 0, "%s", ext);
|
||||||
ext = tmp;
|
ext = ast_str_buffer(tmp);
|
||||||
if ((context = strchr(tmp, '@'))) {
|
if ((context = strchr(ext, '@'))) {
|
||||||
*context++ = '\0';
|
*context++ = '\0';
|
||||||
tmpptr = strchr(context, '&');
|
tmpptr = strchr(context, '&');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user