static void hashT_clean(unsigned int ticks,void *param) { int i; time_t now; ua_pres_t* p= NULL, *q= NULL; now = time(NULL); for(i= 0;i< HASH_SIZE; i++) { lock_get(&HashT->p_records[i].lock); p= HashT->p_records[i].entity->next; while(p) { print_ua_pres(p); LM_DBG("---\n"); if(p->expires -update_period < now ) { if((p->desired_expires> p->expires + 5) || (p->desired_expires== 0 )) { LM_DBG("Desired expires greater than expires -> send a " "refresh PUBLISH desired_expires=%d - expires=%d\n", p->desired_expires, p->expires); if(update_pua(p, i, 0)< 0) { LM_ERR("while updating record\n"); lock_release(&HashT->p_records[i].lock); return; } p= p->next; continue; } LM_DBG("Found expired: uri= %.*s\n", p->pres_uri->len, p->pres_uri->s); if(update_pua(p, i, 1)< 0) { LM_ERR("while updating record\n"); } /* delete it */ q = p->next; delete_htable_safe(p, p->hash_index); p = q; } else p= p->next; } lock_release(&HashT->p_records[i].lock); } }
static void hashT_clean(unsigned int ticks,void *param) { int i; time_t now; ua_pres_t* p= NULL, *q= NULL; if (dbmode==PUA_DB_ONLY) { clean_puadb(update_period, min_expires ); return; } now = time(NULL); for(i= 0;i< HASH_SIZE; i++) { lock_get(&HashT->p_records[i].lock); p= HashT->p_records[i].entity->next; while(p) { print_ua_pres(p); if(p->expires- update_period < now ) { if((p->desired_expires> p->expires + min_expires) || (p->desired_expires== 0 )) { if(update_pua(p)< 0) { LM_ERR("while updating record\n"); lock_release(&HashT->p_records[i].lock); return; } p= p->next; continue; } if(p->expires < now - 10) { q= p->next; LM_DBG("Found expired: uri= %.*s\n", p->pres_uri->len, p->pres_uri->s); delete_htable(p, i); p= q; } else p= p->next; } else p= p->next; } lock_release(&HashT->p_records[i].lock); } }