summaryrefslogtreecommitdiffstats
path: root/src/message-waiting.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-01-12 15:53:19 -0600
committerDenis Kenzior <denkenz@gmail.com>2010-01-12 15:53:19 -0600
commit0d7f8933ff4b46867add49be5bc3340495161e83 (patch)
tree155e74adf6da26bffa14df770770de23abf7114e /src/message-waiting.c
parent476bd84b9865394c7282489262dc6fc47b71e566 (diff)
downloadofono-0d7f8933ff4b46867add49be5bc3340495161e83.tar.bz2
Fix: Create a dedicated callback for syncs
When synchronizing CPHS MBDN, create a separate callback that doesn't try to emit signals, etc since the main work has already been done when EFmbdn was set successfully.
Diffstat (limited to 'src/message-waiting.c')
-rw-r--r--src/message-waiting.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/message-waiting.c b/src/message-waiting.c
index 4019f579..8759c9f2 100644
--- a/src/message-waiting.c
+++ b/src/message-waiting.c
@@ -159,10 +159,21 @@ static DBusMessage *mw_get_properties(DBusConnection *conn,
return reply;
}
+static void cphs_mbdn_sync_cb(int ok, void *data)
+{
+ struct mbdn_set_request *req = data;
+
+ if (!ok)
+ ofono_info("Failed to synchronize CPHS MBDN record");
+
+ g_free(req);
+}
+
static DBusMessage *set_cphs_mbdn(struct ofono_message_waiting *mw,
- int mailbox,
- const char *number,
- DBusMessage *msg)
+ gboolean sync,
+ int mailbox,
+ const char *number,
+ DBusMessage *msg)
{
struct mbdn_set_request *req;
unsigned char efmbdn[255];
@@ -188,7 +199,8 @@ static DBusMessage *set_cphs_mbdn(struct ofono_message_waiting *mw,
sim_adn_build(efmbdn, req->mw->ef_cphs_mbdn_length,
&req->number, NULL);
- if (ofono_sim_write(mw->sim, SIM_EF_CPHS_MBDN_FILEID, mbdn_set_cb,
+ if (ofono_sim_write(mw->sim, SIM_EF_CPHS_MBDN_FILEID,
+ sync ? cphs_mbdn_sync_cb : mbdn_set_cb,
OFONO_SIM_FILE_STRUCTURE_FIXED,
mw_mailbox_to_cphs_record[mailbox],
efmbdn, mw->ef_cphs_mbdn_length, req) == -1) {