diff options
author | Jan Luebbe <jluebbe@debian.org> | 2009-08-12 21:04:54 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-08-12 22:22:42 +0200 |
commit | 9eca37f93cd8937fd97a8d7edfea38ee464c7007 (patch) | |
tree | 71c6c0023139c71e76a123156faae4879fa01469 /openbsc/src/db.c | |
parent | 1da59edf83b0a83ae648b6f12372b56321284935 (diff) |
fix problems with tmsi uniqueness in the subscriber table
Diffstat (limited to 'openbsc/src/db.c')
-rw-r--r-- | openbsc/src/db.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/openbsc/src/db.c b/openbsc/src/db.c index 001605a46..5f591dfaf 100644 --- a/openbsc/src/db.c +++ b/openbsc/src/db.c @@ -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; |