MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / sql_cache_dump

Function sql_cache_dump

modules/sql_cacher/sql_cacher.c:2325–2369  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2323}
2324
2325static int sql_cache_dump(struct sip_msg *msg, db_handlers_t *dbh,
2326 pv_name_fix_t *cols, pvname_list_t *dst_avps)
2327{
2328 cache_entry_t *cache = dbh->c_entry;
2329 int i, n, ver;
2330
2331 LM_DBG("dumping data from cache: %.*s\n", cache->id.len, cache->id.s);
2332
2333 lock_start_read(cache->ref_lock);
2334
2335 ver = get_rld_vers_from_cache(cache, dbh);
2336 if (ver < 0) {
2337 lock_stop_read(cache->ref_lock);
2338 LM_ERR("failed to get reload version\n");
2339 return -1;
2340 }
2341
2342 if (cols[0].id.len != ver) {
2343 for (i = 0; cols[i].c_entry; i++) {
2344 optimize_cdb_decode(&cols[i]);
2345 LM_DBG("optimized fields for col '%.*s': %d/%d/%d\n",
2346 cols[i].col.len, cols[i].col.s, cols[i].col_offset,
2347 cols[i].col_nr, cols[i].last_str);
2348 }
2349
2350 cols[0].id.len = ver;
2351 }
2352
2353 _selected_cols = cols;
2354 _out_avps = dst_avps;
2355 _rld_ver = ver;
2356 _sip_msg = msg;
2357
2358 n = dbh->cdbf.iter_keys(dbh->cdbcon, decode_kv2avps);
2359 if (n < 0) {
2360 lock_stop_read(cache->ref_lock);
2361 LM_ERR("failed to fully iterate through cache '%.*s'\n",
2362 cache->id.len, cache->id.s);
2363 return -1;
2364 }
2365
2366 lock_stop_read(cache->ref_lock);
2367
2368 return n == 0 ? -2 : n;
2369}

Callers

nothing calls this directly

Calls 2

get_rld_vers_from_cacheFunction · 0.85
optimize_cdb_decodeFunction · 0.85

Tested by

no test coverage detected