Don't initialize the service before connecting
This commit is contained in:
parent
0da95bf1c8
commit
f9d6627456
14
ponymap.c
14
ponymap.c
|
@ -229,6 +229,7 @@ struct unit
|
||||||
struct poller_timer timeout_event; ///< Timeout event
|
struct poller_timer timeout_event; ///< Timeout event
|
||||||
struct poller_fd fd_event; ///< FD event
|
struct poller_fd fd_event; ///< FD event
|
||||||
|
|
||||||
|
bool scan_started; ///< Whether the scan has been started
|
||||||
bool abortion_requested; ///< Abortion requested by service
|
bool abortion_requested; ///< Abortion requested by service
|
||||||
bool aborted; ///< Scan has been aborted
|
bool aborted; ///< Scan has been aborted
|
||||||
bool success; ///< Service has been found
|
bool success; ///< Service has been found
|
||||||
|
@ -514,11 +515,14 @@ unit_abort (struct unit *u)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
u->aborted = true;
|
u->aborted = true;
|
||||||
if (u->service->on_aborted)
|
if (u->scan_started)
|
||||||
u->service->on_aborted (u->service_data, u);
|
{
|
||||||
|
if (u->service->on_aborted)
|
||||||
|
u->service->on_aborted (u->service_data, u);
|
||||||
|
u->service->scan_free (u->service_data);
|
||||||
|
}
|
||||||
|
|
||||||
u->transport->cleanup (u);
|
u->transport->cleanup (u);
|
||||||
u->service->scan_free (u->service_data);
|
|
||||||
xclose (u->socket_fd);
|
xclose (u->socket_fd);
|
||||||
|
|
||||||
poller_timer_reset (&u->timeout_event);
|
poller_timer_reset (&u->timeout_event);
|
||||||
|
@ -610,7 +614,10 @@ abort:
|
||||||
static void
|
static void
|
||||||
unit_start_scan (struct unit *u)
|
unit_start_scan (struct unit *u)
|
||||||
{
|
{
|
||||||
|
u->scan_started = true;
|
||||||
poller_timer_set (&u->timeout_event, u->target->ctx->scan_timeout * 1000);
|
poller_timer_set (&u->timeout_event, u->target->ctx->scan_timeout * 1000);
|
||||||
|
|
||||||
|
u->service_data = u->service->scan_init (u);
|
||||||
u->fd_event.dispatcher = (poller_fd_fn) on_unit_ready;
|
u->fd_event.dispatcher = (poller_fd_fn) on_unit_ready;
|
||||||
unit_update_poller (u, NULL);
|
unit_update_poller (u, NULL);
|
||||||
}
|
}
|
||||||
|
@ -671,7 +678,6 @@ unit_new (struct target *target, int socket_fd, uint16_t port,
|
||||||
u->fd_event.dispatcher = (poller_fd_fn) on_unit_connected;
|
u->fd_event.dispatcher = (poller_fd_fn) on_unit_connected;
|
||||||
u->fd_event.user_data = u;
|
u->fd_event.user_data = u;
|
||||||
|
|
||||||
u->service_data = service->scan_init (u);
|
|
||||||
LIST_PREPEND (target->running_units, u);
|
LIST_PREPEND (target->running_units, u);
|
||||||
return u;
|
return u;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue