Paddy Grice
2014-Dec-16 12:25 UTC
[asterisk-users] Realtime not storing voicemail password changes
Hi All I am trying to get voicemail switched over to ARA on version 13 and notice that the password is not stored in the db when it is changed. A little hair pulling and playing around and I think the problem is in the function ast_update2_realtime in main/config.c. Issued source is ==> int ast_update2_realtime(const char *family, ...) { RAII_VAR(struct ast_variable *, lookup_fields, NULL, ast_variables_destroy); RAII_VAR(struct ast_variable *, update_fields, NULL, ast_variables_destroy); va_list ap; va_start(ap, family); /* XXX: If we wanted to pass no lookup fields (select all), we'd be * out of luck. realtime_arguments_to_fields expects at least one key * value pair. */ realtime_arguments_to_fields(ap, &lookup_fields); va_end(ap); va_start(ap, family); realtime_arguments_to_fields2(ap, 1, &lookup_fields); va_end(ap); if (!lookup_fields || !update_fields) { return -1; } return ast_update2_realtime_fields(family, lookup_fields, update_fields); } I believe line 3314 of the file main/config.c should be realtime_arguments_to_fields2(ap, 1, &update_fields); I have changed it and it works for me - but - 1) I don't know what else this may effect 2) I dont know how to pass this on to the development team Paddy -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20141216/269fcbe4/attachment.html>
Matthew Jordan
2014-Dec-16 17:08 UTC
[asterisk-users] Realtime not storing voicemail password changes
On Tue, Dec 16, 2014 at 6:25 AM, Paddy Grice <paddy at wizaner.com> wrote:> Hi All > > I am trying to get voicemail switched over to ARA on version 13 and notice > that the password is not stored in the db when it is changed. > > A little hair pulling and playing around and I think the problem is in the > function ast_update2_realtime in main/config.c. > > Issued source is ==> > > int ast_update2_realtime(const char *family, ...) > { > RAII_VAR(struct ast_variable *, lookup_fields, NULL, > ast_variables_destroy); > RAII_VAR(struct ast_variable *, update_fields, NULL, > ast_variables_destroy); > va_list ap; > > va_start(ap, family); > /* XXX: If we wanted to pass no lookup fields (select all), we'd be > * out of luck. realtime_arguments_to_fields expects at least one > key > * value pair. */ > realtime_arguments_to_fields(ap, &lookup_fields); > va_end(ap); > > va_start(ap, family); > realtime_arguments_to_fields2(ap, 1, &lookup_fields); > va_end(ap); > > if (!lookup_fields || !update_fields) { > return -1; > } > > return ast_update2_realtime_fields(family, lookup_fields, > update_fields); > } > > I believe line 3314 of the file main/config.c should be > > realtime_arguments_to_fields2(ap, 1, &update_fields);That looks right to me. Otherwise, we never extract the variable list arguments passed in to the ast_variable list update_fields. Yikes.> I have changed it and it works for me - but - > > 1) I don't know what else this may effect > 2) I dont know how to pass this on to the development team >Please file a bug on issues.asterisk.org. -- Matthew Jordan Digium, Inc. | Engineering Manager 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA Check us out at: http://digium.com & http://asterisk.org