fix problems with tmsi uniqueness in the subscriber table
This commit is contained in:
parent
1da59edf83
commit
9eca37f93c
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue