dhcp: merge branch 'bg/nettools-request-free'

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/409
This commit is contained in:
Beniamino Galvani 2020-02-11 09:26:43 +01:00
commit 2e53fd4561
2 changed files with 15 additions and 4 deletions

View file

@ -1104,13 +1104,14 @@ int n_dhcp4_c_connection_start_request(NDhcp4CConnection *connection,
if (request->userdata.start_time == 0)
request->userdata.start_time = timestamp;
n_dhcp4_outgoing_free(connection->request);
connection->request = request;
connection->request = n_dhcp4_outgoing_free(connection->request);
r = n_dhcp4_c_connection_send_request(connection, request, timestamp);
if (r)
return r;
connection->request = request;
return 0;
}

View file

@ -1063,8 +1063,18 @@ dhcp4_event_cb (int fd,
int r;
r = n_dhcp4_client_dispatch (priv->client);
if (r < 0)
return G_SOURCE_CONTINUE;
if (r < 0) {
/* FIXME: if any operation (e.g. send()) fails during the
* dispatch, n-dhcp4 returns an error without arming timers
* or progressing state, so the only reasonable thing to do
* is to move to failed state so that the client will be
* restarted. Ideally n-dhcp4 should retry failed operations
* a predefined number of times (possibly infinite).
*/
_LOGE ("error %d dispatching events", r);
nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_FAIL, NULL, NULL);
return G_SOURCE_REMOVE;
}
while (!n_dhcp4_client_pop_event (priv->client, &event) && event) {
dhcp4_event_handle (self, event);