/* * Things that need to happen immediately after connection initiation should go here. */ void check_connection_established_dowork (struct context *c) { if (event_timeout_trigger (&c->c2.wait_for_connect, &c->c2.timeval, ETT_DEFAULT)) { if (CONNECTION_ESTABLISHED (c)) { #if P2MP /* if --pull was specified, send a push request to server */ if (c->c2.tls_multi && c->options.pull) { #ifdef ENABLE_MANAGEMENT if (management) { management_set_state (management, OPENVPN_STATE_GET_CONFIG, NULL, 0, 0); } #endif /* send push request in 1 sec */ event_timeout_init (&c->c2.push_request_interval, 1, now); reset_coarse_timers (c); } else #endif { do_up (c, false, 0); } event_timeout_clear (&c->c2.wait_for_connect); } } }
/* * Call management interface with restart info */ void signal_restart_status(const struct signal_info *si) { #ifdef ENABLE_MANAGEMENT if (management) { int state = -1; switch (si->signal_received) { case SIGINT: case SIGTERM: state = OPENVPN_STATE_EXITING; break; case SIGHUP: case SIGUSR1: state = OPENVPN_STATE_RECONNECTING; break; } if (state >= 0) { management_set_state(management, state, si->signal_text ? si->signal_text : signal_name(si->signal_received, true), NULL, NULL, NULL, NULL); } } #endif /* ifdef ENABLE_MANAGEMENT */ }