summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-10-29 16:38:25 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-10-29 16:38:25 -0500
commit252fd9eb5226c2d7b447f3ba0b42dc12257c0c4b (patch)
tree37f7e4b921e691ab047c1af950430137e1441732
parenta53440d64882ae9280fc33621c2f8ef4ddb9aebf (diff)
downloadofono-252fd9eb5226c2d7b447f3ba0b42dc12257c0c4b.tar.bz2
Fix: Properly update technologies
When current operator is reported, update the technology list if the tech information is available
-rw-r--r--src/network.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/network.c b/src/network.c
index 22f3aab6..9b18522b 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1128,9 +1128,16 @@ static void current_operator_callback(const struct ofono_error *error,
network_operator_compare);
if (op) {
- set_network_operator_status(op->data, OPERATOR_STATUS_CURRENT);
- set_network_operator_techs(op->data, current->tech);
- set_network_operator_name(op->data, current->name);
+ struct network_operator_data *opd = op->data;
+ unsigned int techs = opd->techs;
+
+ if (current->tech != -1) {
+ techs |= 1 << current->tech;
+ set_network_operator_techs(opd, techs);
+ }
+
+ set_network_operator_status(opd, OPERATOR_STATUS_CURRENT);
+ set_network_operator_name(opd, current->name);
if (netreg->current_operator == op->data)
return;