diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 8968127598..1e1803f4a2 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -2869,10 +2869,20 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_ /* Play the beginning intro if desired */ if (!ast_strlen_zero(prefile)) { - RETRIEVE(prefile, -1); +#ifdef ODBC_STORAGE + int success = +#endif + RETRIEVE(prefile, -1); if (ast_fileexists(prefile, NULL, NULL) > 0) { if (ast_streamfile(chan, prefile, chan->language) > -1) res = ast_waitstream(chan, ecodes); +#ifdef ODBC_STORAGE + if(success == -1) + /*We couldn't retrieve the file from the database, but we found it on the file system. Let's put it in the database*/ + if(option_debug) + ast_log(LOG_DEBUG, "Greeting not retrieved from database, but found in file storage. Inserting into database\n"); + store_file(prefile, vmu->mailbox, vmu->context, -1); +#endif } else { if (option_debug) ast_log(LOG_DEBUG, "%s doesn't exist, doing what we can\n", prefile);