Imported Upstream version 1.35
[platform/upstream/connman.git] / src / peer.c
index 206b799..340cbcc 100644 (file)
@@ -176,7 +176,7 @@ static int start_dhcp_server(struct connman_peer *peer)
        if (err < 0)
                goto error;
 
-       g_timeout_add_seconds(0, dhcp_server_started, connman_peer_ref(peer));
+       g_idle_add(dhcp_server_started, connman_peer_ref(peer));
 
        return 0;
 
@@ -758,7 +758,7 @@ void connman_peer_set_name(struct connman_peer *peer, const char *name)
 void connman_peer_set_iface_address(struct connman_peer *peer,
                                        const unsigned char *iface_address)
 {
-       memset(peer->iface_address, 0, ETH_ALEN);
+       memset(peer->iface_address, 0, sizeof(peer->iface_address));
        memcpy(peer->iface_address, iface_address, ETH_ALEN);
 }
 
@@ -905,13 +905,16 @@ int connman_peer_set_state(struct connman_peer *peer,
                break;
        case CONNMAN_PEER_STATE_READY:
                reply_pending(peer, 0);
+               __connman_technology_set_connected(CONNMAN_SERVICE_TYPE_P2P, true);
                break;
        case CONNMAN_PEER_STATE_DISCONNECT:
                if (peer->connection_master)
                        stop_dhcp_server(peer);
+               else
+                       __connman_dhcp_stop(peer->ipconfig);
                peer->connection_master = false;
                peer->sub_device = NULL;
-
+               __connman_technology_set_connected(CONNMAN_SERVICE_TYPE_P2P, false);
                break;
        case CONNMAN_PEER_STATE_FAILURE:
                if (manage_peer_error(peer) == 0)