X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdhcp%2Fclient.c;h=80fdf26588eaf5c0306709363d03da2e0bbc5270;hb=eb5dc22be1b5bdb93c289503357ee3d57de559b6;hp=22bbc8e211ad734a70f0ccc7260a63ecae403db6;hpb=26cc90dfaf2ad149b702626f9552c81abbb26862;p=platform%2Fupstream%2Fconnman.git diff --git a/gdhcp/client.c b/gdhcp/client.c index 22bbc8e..80fdf26 100755 --- a/gdhcp/client.c +++ b/gdhcp/client.c @@ -562,7 +562,8 @@ static int send_request(GDHCPClient *dhcp_client) if (dhcp_client->state == RENEWING) return dhcp_send_kernel_packet(&packet, dhcp_client->requested_ip, CLIENT_PORT, - dhcp_client->server_ip, SERVER_PORT); + dhcp_client->server_ip, SERVER_PORT, + dhcp_client->interface); return dhcp_send_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST, SERVER_PORT, @@ -586,7 +587,8 @@ static int send_release(GDHCPClient *dhcp_client, dhcp_add_option_uint32(&packet, DHCP_SERVER_ID, server); return dhcp_send_kernel_packet(&packet, ciaddr, CLIENT_PORT, - server, SERVER_PORT); + server, SERVER_PORT, + dhcp_client->interface); } static gboolean ipv4ll_probe_timeout(gpointer dhcp_data); @@ -2324,6 +2326,14 @@ static gboolean listener_event(GIOChannel *channel, GIOCondition condition, if (condition & (G_IO_NVAL | G_IO_ERR | G_IO_HUP)) { dhcp_client->listener_watch = 0; +#if defined TIZEN_EXT + /* re-register event listener when socket failed */ + int retry_count = 0; + int ret = -1; + while (retry_count++ < GIO_SOCKET_RETRY_COUNT && ret < 0) + ret = switch_listening_mode(dhcp_client, + dhcp_client->type); +#endif /* defined TIZEN_EXT */ return FALSE; }