示例#1
0
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;
		}
	}
}
示例#2
0
文件: acc.c 项目: iamroger/voip
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);
}