summaryrefslogtreecommitdiffstats
path: root/src/emulator.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-05-22 07:47:56 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-05-24 12:11:01 -0500
commit831e5ac4ec018903ec092787a0129348f2d48dba (patch)
tree378d9499f1bf9338047507867407f1bba2c4ce97 /src/emulator.c
parent5021c1ee460ed31306c14821a33a4ea490e41ba4 (diff)
downloadofono-831e5ac4ec018903ec092787a0129348f2d48dba.tar.bz2
emulator: optimize request_private_network_cb flow
Diffstat (limited to 'src/emulator.c')
-rw-r--r--src/emulator.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/emulator.c b/src/emulator.c
index a852b7be..62f09293 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -174,20 +174,13 @@ static void request_private_network_cb(
{
struct ofono_emulator *em = data;
- if (pns == NULL) {
- __ofono_private_network_release(em->pns_id);
- em->pns_id = 0;
- g_at_server_send_final(em->server, G_AT_SERVER_RESULT_ERROR);
- return;
- }
+ if (pns == NULL)
+ goto error;
em->local_pns = g_try_new0(struct ofono_private_network_settings, 1);
if (em->local_pns == NULL) {
close(pns->fd);
- __ofono_private_network_release(em->pns_id);
- em->pns_id = 0;
- g_at_server_send_final(em->server, G_AT_SERVER_RESULT_ERROR);
- return;
+ goto error;
}
em->local_pns->fd = pns->fd;
@@ -200,6 +193,11 @@ static void request_private_network_cb(
em->source = g_idle_add(setup_ppp, em);
return;
+
+error:
+ __ofono_private_network_release(em->pns_id);
+ em->pns_id = 0;
+ g_at_server_send_final(em->server, G_AT_SERVER_RESULT_ERROR);
}
static gboolean dial_call(struct ofono_emulator *em, const char *dial_str)