static void acc_dlg_onshutdown(struct dlg_cell *dlg, int type, struct dlg_cb_params *_params) { str flags_s; acc_ctx_t* ctx; str created_s; if (!_params) { LM_ERR("not enough info!\n"); return; } ctx = *_params->param; if (ctx->extra_values && store_extra_values(ctx->extra_values, &extra_str, dlg) < 0) { LM_ERR("cannot store extra values!\n"); return; } if (ctx->leg_values && store_leg_values(ctx, &leg_str, dlg) < 0) { LM_ERR("cannot store leg values!\n"); return; } flags_s.s = (char*)(&ctx->flags); flags_s.len = sizeof(unsigned long long); /* store flags into dlg */ if ( dlg_api.store_dlg_value(dlg, &flags_str, &flags_s) < 0) { LM_ERR("cannot store flag value into dialog\n"); return; } created_s.s = (char*)(&ctx->created); created_s.len = sizeof(time_t); if ( dlg_api.store_dlg_value(dlg,&created_str,&created_s) < 0) { LM_ERR("cannot store created value!\n"); return; } if (is_db_acc_on(ctx->flags) && ctx->acc_table.s && ctx->acc_table.len) { if ( dlg_api.store_dlg_value(dlg, &table_str, &ctx->acc_table) < 0) { LM_ERR("cannot store table name into dialog\n"); return; } } }
int store_db_extra_values(struct dlg_cell *dlg, struct sip_msg *req, struct sip_msg *reply) { return store_extra_values(db_extra, &db_extra_str, dlg, req, reply); }