fix problems with tmsi uniqueness in the subscriber table

This commit is contained in:
Jan Luebbe 2009-08-12 21:04:54 +02:00 committed by Harald Welte
parent 1da59edf83
commit 9eca37f93c
2 changed files with 20 additions and 5 deletions

View File

@ -38,6 +38,7 @@ struct gsm_subscriber* db_get_subscriber(struct gsm_network *net,
const char *subscr);
int db_sync_subscriber(struct gsm_subscriber* subscriber);
int db_subscriber_alloc_tmsi(struct gsm_subscriber* subscriber);
int db_subscriber_alloc_exten(struct gsm_subscriber* subscriber);
int db_subscriber_alloc_token(struct gsm_subscriber* subscriber, u_int32_t* token);
int db_subscriber_assoc_imei(struct gsm_subscriber* subscriber, char *imei);
int db_sync_equipment(struct gsm_equipment *equip);

View File

@ -341,16 +341,30 @@ struct gsm_subscriber *db_get_subscriber(struct gsm_network *net,
int db_sync_subscriber(struct gsm_subscriber* subscriber) {
dbi_result result;
char *q_tmsi;
if (subscriber->tmsi[0])
dbi_conn_quote_string_copy(conn,
subscriber->tmsi,
&q_tmsi);
else
q_tmsi = strdup("NULL");
result = dbi_conn_queryf(conn,
"UPDATE Subscriber "
"SET updated = datetime('now'), "
"tmsi = '%s', "
"lac = %i, "
"authorized = %i "
"name = '%s', "
"extension = '%s', "
"authorized = %i, "
"tmsi = %s, "
"lac = %i "
"WHERE imsi = %s ",
subscriber->tmsi, subscriber->lac, subscriber->authorized, subscriber->imsi
subscriber->name,
subscriber->extension,
subscriber->authorized,
q_tmsi,
subscriber->lac,
subscriber->imsi
);
free(q_tmsi);
if (result==NULL) {
printf("DB: Failed to update Subscriber (by IMSI).\n");
return 1;