diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-06-21 11:18:26 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-06-21 15:21:39 -0500 |
commit | c9677660704a533474fee945ceee6f07e7f70335 (patch) | |
tree | be1a03fb72e81a5cffd91971429e6a9bfe59c84e /src | |
parent | cf62a6e8d510debedc65b483546f35df4d84f4ee (diff) | |
download | ofono-c9677660704a533474fee945ceee6f07e7f70335.tar.bz2 |
smsutil: Streamline flow of sr add_fragment
Diffstat (limited to 'src')
-rw-r--r-- | src/smsutil.c | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/smsutil.c b/src/smsutil.c index 71a671bc..d923fd7e 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -2747,27 +2747,15 @@ void status_report_assembly_add_fragment( unsigned int *id_table_key; id_table = g_hash_table_lookup(assembly->assembly_table, to->address); - /* Create id_table and node */ + + /* Create hashtable keyed by the to address if required */ if (id_table == NULL) { id_table = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free); - id_table_key = g_new0(unsigned int, 1); - - node = g_new0(struct id_table_node, 1); - node->to = *to; - node->mrs[offset] |= bit; - node->expiration = expiration; - node->total_mrs = total_mrs; - node->sent_mrs = 1; - node->deliverable = TRUE; - - *id_table_key = msg_id; - g_hash_table_insert(id_table, id_table_key, node); - assembly_table_key = g_try_malloc(sizeof(to->address)); if (assembly_table_key == NULL) { - g_free(node); + g_hash_table_destroy(id_table); return; } @@ -2775,26 +2763,23 @@ void status_report_assembly_add_fragment( g_hash_table_insert(assembly->assembly_table, assembly_table_key, id_table); - return; } node = g_hash_table_lookup(id_table, &msg_id); - /* id_table exists, create new node */ + + /* Create node in the message id hashtable if required */ if (node == NULL) { id_table_key = g_new0(unsigned int, 1); + node = g_new0(struct id_table_node, 1); node->to = *to; - node->mrs[offset] |= bit; - node->expiration = expiration; node->total_mrs = total_mrs; - node->sent_mrs = 1; node->deliverable = TRUE; *id_table_key = msg_id; g_hash_table_insert(id_table, id_table_key, node); - - return; } + /* id_table and node both exists */ node->mrs[offset] |= bit; node->expiration = expiration; |