fix mem leak (bug #4318)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5794 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
Russell Bryant 20 years ago
parent 984142aebe
commit 083cf7af1d

@ -861,21 +861,30 @@ static struct localuser *wait_for_answer(struct queue_ent *qe, struct localuser
if (!f || ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP))) { if (!f || ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP))) {
/* Got hung up */ /* Got hung up */
*to=-1; *to=-1;
if (f)
ast_frfree(f);
return NULL; return NULL;
} }
if (f && (f->frametype == AST_FRAME_DTMF) && allowdisconnect_out && (f->subclass == '*')) { if ((f->frametype == AST_FRAME_DTMF) && allowdisconnect_out && (f->subclass == '*')) {
if (option_verbose > 3) if (option_verbose > 3)
ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass); ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass);
*to=0; *to=0;
if (f)
ast_frfree(f);
return NULL; return NULL;
} }
if (f && (f->frametype == AST_FRAME_DTMF) && (f->subclass != '*') && valid_exit(qe, f->subclass)) { if ((f->frametype == AST_FRAME_DTMF) && (f->subclass != '*') && valid_exit(qe, f->subclass)) {
if (option_verbose > 3) if (option_verbose > 3)
ast_verbose(VERBOSE_PREFIX_3 "User pressed digit: %c\n", f->subclass); ast_verbose(VERBOSE_PREFIX_3 "User pressed digit: %c\n", f->subclass);
*to=0; *to=0;
*digit=f->subclass; *digit=f->subclass;
if (f)
ast_frfree(f);
return NULL; return NULL;
} }
if (f)
ast_frfree(f);
} }
if (!*to && (option_verbose > 2)) if (!*to && (option_verbose > 2))
ast_verbose( VERBOSE_PREFIX_3 "Nobody picked up in %d ms\n", orig); ast_verbose( VERBOSE_PREFIX_3 "Nobody picked up in %d ms\n", orig);

Loading…
Cancel
Save