device: Combine two if statements with identical outcome
[framework/connectivity/connman.git] / plugins / vpn.c
index e41a374..165c325 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Connection Manager
  *
- *  Copyright (C) 2007-2010  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2007-2012  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -162,10 +162,12 @@ vpn_exit:
                                                CONNMAN_PROVIDER_STATE_IDLE);
 
        connman_provider_set_index(provider, -1);
-       connman_provider_unref(data->provider);
 
-       g_free(data->if_name);
-       g_free(data);
+       if (data != NULL) {
+               connman_provider_unref(data->provider);
+               g_free(data->if_name);
+               g_free(data);
+       }
 
        connman_task_destroy(task);
 }
@@ -351,9 +353,12 @@ static int vpn_connect(struct connman_provider *provider)
 
        vpn_driver_data = g_hash_table_lookup(driver_hash, name);
 
-       if (vpn_driver_data != NULL && vpn_driver_data->vpn_driver != NULL &&
-               vpn_driver_data->vpn_driver->flags != VPN_FLAG_NO_TUN) {
+       if (vpn_driver_data == NULL || vpn_driver_data->vpn_driver == NULL) {
+               ret = -EINVAL;
+               goto exist_err;
+       }
 
+       if (vpn_driver_data->vpn_driver->flags != VPN_FLAG_NO_TUN) {
                ret = vpn_create_tun(provider);
                if (ret < 0)
                        goto exist_err;
@@ -505,7 +510,7 @@ int vpn_register(const char *name, struct vpn_driver *vpn_driver,
                return -ENOMEM;
        }
 
-       g_hash_table_insert(driver_hash, (char *)name, data);
+       g_hash_table_replace(driver_hash, (char *)name, data);
 
        connman_provider_driver_register(&data->provider_driver);