int reg_ht_add(reg_uac_t *reg) { int len; reg_uac_t *nr = NULL; char *p; if(reg==NULL || _reg_htable==NULL) { LM_ERR("bad parameters: %p/%p\n", reg, _reg_htable); return -1; } if(reg->auth_password.len>UAC_REG_MAX_PASSWD_SIZE) { LM_ERR("bad parameters: %p/%p -- password too long %d\n", reg, _reg_htable, reg->auth_password.len); return -1; } len = reg->l_uuid.len + 1 + reg->l_username.len + 1 + reg->l_domain.len + 1 + reg->r_username.len + 1 + reg->r_domain.len + 1 + reg->realm.len + 1 + reg->auth_proxy.len + 1 + reg->auth_username.len + 1 + UAC_REG_MAX_PASSWD_SIZE /*reg->auth_password.len*/ + 1; nr = (reg_uac_t*)shm_malloc(sizeof(reg_uac_t) + len); if(nr==NULL) { LM_ERR("no more shm\n"); return -1; } memset(nr, 0, sizeof(reg_uac_t) + len); nr->expires = reg->expires; nr->h_uuid = reg_compute_hash(®->l_uuid); nr->h_user = reg_compute_hash(®->l_username); p = (char*)nr + sizeof(reg_uac_t); reg_copy_shm(&nr->l_uuid, ®->l_uuid); reg_copy_shm(&nr->l_username, ®->l_username); reg_copy_shm(&nr->l_domain, ®->l_domain); reg_copy_shm(&nr->r_username, ®->r_username); reg_copy_shm(&nr->r_domain, ®->r_domain); reg_copy_shm(&nr->realm, ®->realm); reg_copy_shm(&nr->auth_proxy, ®->auth_proxy); reg_copy_shm(&nr->auth_username, ®->auth_username); /* password at the end, to be able to update it easily */ reg_copy_shm(&nr->auth_password, ®->auth_password); reg_ht_add_byuser(nr); reg_ht_add_byuuid(nr); counter_inc(regtotal); return 0; }
int reg_ht_add(reg_uac_t *reg) { int len; reg_uac_t *nr = NULL; char *p; if(reg==NULL || _reg_htable==NULL) { LM_ERR("bad paramaers: %p/%p\n", reg, _reg_htable); return -1; } len = reg->l_uuid.len + 1 + reg->l_username.len + 1 + reg->l_domain.len + 1 + reg->r_username.len + 1 + reg->r_domain.len + 1 + reg->realm.len + 1 + reg->auth_username.len + 1 + reg->auth_password.len + 1 + reg->auth_proxy.len + 1; nr = (reg_uac_t*)shm_malloc(sizeof(reg_uac_t) + len); if(nr==NULL) { LM_ERR("no more shm\n"); return -1; } memset(nr, 0, sizeof(reg_uac_t) + len); nr->expires = reg->expires; nr->h_uuid = reg_compute_hash(®->l_uuid); nr->h_user = reg_compute_hash(®->l_username); p = (char*)nr + sizeof(reg_uac_t); reg_copy_shm(&nr->l_uuid, ®->l_uuid); reg_copy_shm(&nr->l_username, ®->l_username); reg_copy_shm(&nr->l_domain, ®->l_domain); reg_copy_shm(&nr->r_username, ®->r_username); reg_copy_shm(&nr->r_domain, ®->r_domain); reg_copy_shm(&nr->realm, ®->realm); reg_copy_shm(&nr->auth_username, ®->auth_username); reg_copy_shm(&nr->auth_password, ®->auth_password); reg_copy_shm(&nr->auth_proxy, ®->auth_proxy); reg_ht_add_byuser(nr); reg_ht_add_byuuid(nr); return 0; }