diff options
Diffstat (limited to 'src/peer.c')
-rwxr-xr-x | src/peer.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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) |