From 1fa59eea0504c1c59818faff4ebb2aa9e15a46f2 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 21 Mar 2013 15:09:44 +0900 Subject: [PATCH] Fix MMS sending failure Not use ipconfig index for searching service because ConnMan cannot find correct service if it has same ipconfig index --- packaging/connman.spec | 2 +- src/connman.h | 8 ++++++++ src/ipconfig.c | 8 ++++++++ src/network.c | 24 ++++++++++++++++++++++++ src/provider.c | 4 ++++ 5 files changed, 45 insertions(+), 1 deletion(-) diff --git a/packaging/connman.spec b/packaging/connman.spec index 047d637..7592f88 100644 --- a/packaging/connman.spec +++ b/packaging/connman.spec @@ -1,5 +1,5 @@ Name: connman -Version: 1.3_9 +Version: 1.3_10 Release: 1 License: GPLv2 Summary: Connection Manager diff --git a/src/connman.h b/src/connman.h index 5d14ea9..c88342e 100644 --- a/src/connman.h +++ b/src/connman.h @@ -339,7 +339,15 @@ enum connman_ipconfig_method __connman_ipconfig_get_method( int __connman_ipconfig_address_add(struct connman_ipconfig *ipconfig); int __connman_ipconfig_address_remove(struct connman_ipconfig *ipconfig); int __connman_ipconfig_address_unset(struct connman_ipconfig *ipconfig); +#if defined TIZEN_EXT +/* + * Description: __connman_service_lookup_from_index cannot find correct service + * e.g. same interface or same APN of cellular profile + */ +int __connman_ipconfig_gateway_add(struct connman_ipconfig *ipconfig, struct connman_service *service); +#else int __connman_ipconfig_gateway_add(struct connman_ipconfig *ipconfig); +#endif void __connman_ipconfig_gateway_remove(struct connman_ipconfig *ipconfig); unsigned char __connman_ipconfig_netmask_prefix_len(const char *netmask); diff --git a/src/ipconfig.c b/src/ipconfig.c index 5e34ac0..3b7e657 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -1187,16 +1187,24 @@ void __connman_ipconfig_set_gateway(struct connman_ipconfig *ipconfig, const cha ipconfig->address->gateway = g_strdup(gateway); } +#if defined TIZEN_EXT +int __connman_ipconfig_gateway_add(struct connman_ipconfig *ipconfig, struct connman_service *service) +#else int __connman_ipconfig_gateway_add(struct connman_ipconfig *ipconfig) +#endif { +#if !defined TIZEN_EXT struct connman_service *service; +#endif DBG(""); if (ipconfig->address == NULL) return -EINVAL; +#if !defined TIZEN_EXT service = __connman_service_lookup_from_index(ipconfig->index); +#endif if (service == NULL) return -EINVAL; diff --git a/src/network.c b/src/network.c index e7dc149..6b50cd3 100644 --- a/src/network.c +++ b/src/network.c @@ -826,7 +826,11 @@ static void dhcp_success(struct connman_network *network) if (err < 0) goto err; +#if defined TIZEN_EXT + err = __connman_ipconfig_gateway_add(ipconfig_ipv4, service); +#else err = __connman_ipconfig_gateway_add(ipconfig_ipv4); +#endif if (err < 0) goto err; @@ -883,7 +887,11 @@ static int set_connected_fixed(struct connman_network *network) if (err < 0) goto err; +#if defined TIZEN_EXT + err = __connman_ipconfig_gateway_add(ipconfig_ipv4, service); +#else err = __connman_ipconfig_gateway_add(ipconfig_ipv4); +#endif if (err < 0) goto err; @@ -917,7 +925,11 @@ static void set_connected_manual(struct connman_network *network) if (err < 0) goto err; +#if defined TIZEN_EXT + err = __connman_ipconfig_gateway_add(ipconfig, service); +#else err = __connman_ipconfig_gateway_add(ipconfig); +#endif if (err < 0) goto err; @@ -972,7 +984,11 @@ static int manual_ipv6_set(struct connman_network *network, return err; } +#if defined TIZEN_EXT + err = __connman_ipconfig_gateway_add(ipconfig_ipv6, service); +#else err = __connman_ipconfig_gateway_add(ipconfig_ipv6); +#endif if (err < 0) return err; @@ -1034,7 +1050,11 @@ static gboolean dhcpv6_set_addresses(struct connman_network *network) if (err < 0) goto err; +#if defined TIZEN_EXT + err = __connman_ipconfig_gateway_add(ipconfig_ipv6, service); +#else err = __connman_ipconfig_gateway_add(ipconfig_ipv6); +#endif if (err < 0) goto err; @@ -1628,7 +1648,11 @@ static int manual_ipv4_set(struct connman_network *network, return err; } +#if defined TIZEN_EXT + return __connman_ipconfig_gateway_add(ipconfig, service); +#else return __connman_ipconfig_gateway_add(ipconfig); +#endif } int __connman_network_clear_ipconfig(struct connman_network *network, diff --git a/src/provider.c b/src/provider.c index 3f4bb1c..a29d792 100644 --- a/src/provider.c +++ b/src/provider.c @@ -498,7 +498,11 @@ static int set_connected(struct connman_provider *provider, } __connman_ipconfig_address_add(ipconfig); +#if defined TIZEN_EXT + __connman_ipconfig_gateway_add(ipconfig, service); +#else __connman_ipconfig_gateway_add(ipconfig); +#endif provider_indicate_state(provider, CONNMAN_SERVICE_STATE_READY); -- 2.7.4