aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorJan Luebbe <jluebbe@debian.org>2009-08-12 21:04:54 +0200
committerHarald Welte <laforge@gnumonks.org>2009-08-12 22:22:42 +0200
commit9eca37f93cd8937fd97a8d7edfea38ee464c7007 (patch)
tree71c6c0023139c71e76a123156faae4879fa01469 /openbsc/src
parent1da59edf83b0a83ae648b6f12372b56321284935 (diff)
fix problems with tmsi uniqueness in the subscriber table
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/db.c24
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;