mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-20 23:20:41 +01:00
acd: don't use GIOChannel to watch plain file descriptor for event fd
This commit is contained in:
parent
4b46e3a5fa
commit
e832c478b0
1 changed files with 21 additions and 13 deletions
|
|
@ -38,8 +38,7 @@ struct _NMAcdManager {
|
|||
GHashTable *addresses;
|
||||
guint completed;
|
||||
NAcd *acd;
|
||||
GIOChannel *channel;
|
||||
guint event_id;
|
||||
GSource *event_source;
|
||||
|
||||
NMAcdCallbacks callbacks;
|
||||
gpointer user_data;
|
||||
|
|
@ -157,7 +156,9 @@ nm_acd_manager_add_address (NMAcdManager *self, in_addr_t address)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
acd_event (GIOChannel *source, GIOCondition condition, gpointer data)
|
||||
acd_event (int fd,
|
||||
GIOCondition condition,
|
||||
gpointer data)
|
||||
{
|
||||
NMAcdManager *self = data;
|
||||
NAcdEvent *event;
|
||||
|
|
@ -334,11 +335,15 @@ nm_acd_manager_start_probe (NMAcdManager *self, guint timeout)
|
|||
if (success)
|
||||
self->state = STATE_PROBING;
|
||||
|
||||
nm_assert (!self->channel);
|
||||
nm_assert (self->event_id == 0);
|
||||
nm_assert (!self->event_source);
|
||||
n_acd_get_fd (self->acd, &fd);
|
||||
self->channel = g_io_channel_unix_new (fd);
|
||||
self->event_id = g_io_add_watch (self->channel, G_IO_IN, acd_event, self);
|
||||
self->event_source = nm_g_unix_fd_source_new (fd,
|
||||
G_IO_IN,
|
||||
G_PRIORITY_DEFAULT,
|
||||
acd_event,
|
||||
self,
|
||||
NULL);
|
||||
g_source_attach (self->event_source, NULL);
|
||||
|
||||
return success ? 0 : -NME_UNSPEC;
|
||||
}
|
||||
|
|
@ -421,11 +426,15 @@ nm_acd_manager_announce_addresses (NMAcdManager *self)
|
|||
}
|
||||
}
|
||||
|
||||
if (!self->channel) {
|
||||
nm_assert (self->event_id == 0);
|
||||
if (!self->event_source) {
|
||||
n_acd_get_fd (self->acd, &fd);
|
||||
self->channel = g_io_channel_unix_new (fd);
|
||||
self->event_id = g_io_add_watch (self->channel, G_IO_IN, acd_event, self);
|
||||
self->event_source = nm_g_unix_fd_source_new (fd,
|
||||
G_IO_IN,
|
||||
G_PRIORITY_DEFAULT,
|
||||
acd_event,
|
||||
self,
|
||||
NULL);
|
||||
g_source_attach (self->event_source, NULL);
|
||||
}
|
||||
|
||||
return success ? 0 : -NME_UNSPEC;
|
||||
|
|
@ -479,8 +488,7 @@ nm_acd_manager_free (NMAcdManager *self)
|
|||
self->callbacks.user_data_destroy (self->user_data);
|
||||
|
||||
nm_clear_pointer (&self->addresses, g_hash_table_destroy);
|
||||
nm_clear_pointer (&self->channel, g_io_channel_unref);
|
||||
nm_clear_g_source (&self->event_id);
|
||||
nm_clear_g_source_inst (&self->event_source);
|
||||
nm_clear_pointer (&self->acd, n_acd_unref);
|
||||
|
||||
g_slice_free (NMAcdManager, self);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue