mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-07-22 02:35:25 +00:00
dhcp: merge branch 'bg/nettools-request-free'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/409
This commit is contained in:
commit
2e53fd4561
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue