Use dbus_free for deallocation, when allocated with dbus_malloc0
[platform/upstream/connman.git] / gdhcp / client.c
index 22bbc8e..80fdf26 100755 (executable)
@@ -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;
        }