diff options
author | Eun Chul Kim <ec4537.kim@samsung.com> | 2017-02-27 15:57:08 +0900 |
---|---|---|
committer | Seonah Moon <seonah1.moon@samsung.com> | 2017-03-30 18:46:32 +0900 |
commit | 1437341c77d3501da366a3645736d509d73415f8 (patch) | |
tree | a064bafe213f72130efb0c6f23e6ed57d229dfff | |
parent | b9a4f38dcd5587016b057bd044fd643218b77b4d (diff) | |
download | connman-accepted/tizen_wearable.tar.gz connman-accepted/tizen_wearable.tar.bz2 connman-accepted/tizen_wearable.zip |
apply upstream fixessubmit/tizen/20170403.015738accepted/tizen/wearable/20170403.124441accepted/tizen/unified/20170403.124614accepted/tizen/tv/20170403.124414accepted/tizen/mobile/20170403.124303accepted/tizen/ivi/20170403.124556accepted/tizen/common/20170403.190030accepted/tizen_wearableaccepted/tizen_tvaccepted/tizen_mobileaccepted/tizen_iviaccepted/tizen_common
- Replace g_timeout_add_seconds() with 0 as timeout to g_idle_add()
- gdhcp: Set T1 and T2 to infinite if expiry time is infinite
- dhcpv6: Return -EISCONN when the expiry time is inifinite
Change-Id: I59ddd9b4c2d1af0f1ee8898381bc0372fba8e8ad
-rwxr-xr-x | gdhcp/client.c | 9 | ||||
-rwxr-xr-x | src/dhcpv6.c | 12 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gdhcp/client.c b/gdhcp/client.c index 3157632a..7e04176e 100755 --- a/gdhcp/client.c +++ b/gdhcp/client.c @@ -854,16 +854,19 @@ int g_dhcpv6_client_get_timeouts(GDHCPClient *dhcp_client, return -EINVAL; if (T1) - *T1 = dhcp_client->T1; + *T1 = (dhcp_client->expire == 0xffffffff) ? 0xffffffff: + dhcp_client->T1; if (T2) - *T2 = dhcp_client->T2; + *T2 = (dhcp_client->expire == 0xffffffff) ? 0xffffffff: + dhcp_client->T2; if (started) *started = dhcp_client->last_request; if (expire) - *expire = dhcp_client->last_request + dhcp_client->expire; + *expire = (dhcp_client->expire == 0xffffffff) ? 0xffffffff: + dhcp_client->last_request + dhcp_client->expire; return 0; } diff --git a/src/dhcpv6.c b/src/dhcpv6.c index 55dcd615..bf4da3e7 100755 --- a/src/dhcpv6.c +++ b/src/dhcpv6.c @@ -1234,12 +1234,17 @@ static int check_restart(struct connman_dhcpv6 *dhcp) g_dhcpv6_client_get_timeouts(dhcp->dhcp_client, NULL, NULL, NULL, &expired); + + /* infinite lifetime for an DHCPv6 address */ + if (expired == 0xffffffff) + return -EISCONN; + current = time(NULL); if (current >= expired) { DBG("expired by %d secs", (int)(current - expired)); - g_timeout_add(0, dhcpv6_restart, dhcp); + g_idle_add(dhcpv6_restart, dhcp); return -ETIMEDOUT; } @@ -1498,8 +1503,7 @@ int __connman_dhcpv6_start_renew(struct connman_network *network, /* RFC 3315, chapter 18.1.3, start rebind */ DBG("start rebind immediately"); - dhcp->timeout = g_timeout_add_seconds(0, start_rebind, - dhcp); + dhcp->timeout = g_idle_add(start_rebind, dhcp); } else if ((unsigned)current < (unsigned)started + T1) { delta = started + T1 - current; @@ -2205,7 +2209,7 @@ static int check_pd_restart(struct connman_dhcpv6 *dhcp) if (current > expired) { DBG("expired by %d secs", (int)(current - expired)); - g_timeout_add(0, dhcpv6_restart, dhcp); + g_idle_add(dhcpv6_restart, dhcp); return -ETIMEDOUT; } |