mirror of
https://github.com/RightNow-AI/openfang.git
synced 2026-07-30 06:32:17 +00:00
community fixes
This commit is contained in:
@@ -925,7 +925,7 @@ impl ChannelBridgeHandle for KernelBridgeAdapter {
|
||||
return "OFP peer network is disabled. Set network_enabled = true in config.toml."
|
||||
.to_string();
|
||||
}
|
||||
match &self.kernel.peer_registry {
|
||||
match self.kernel.peer_registry.get() {
|
||||
Some(registry) => {
|
||||
let peers = registry.all_peers();
|
||||
if peers.is_empty() {
|
||||
|
||||
@@ -4805,7 +4805,7 @@ pub async fn network_status(State(state): State<Arc<AppState>>) -> impl IntoResp
|
||||
&& !state.kernel.config.network.shared_secret.is_empty();
|
||||
|
||||
let (node_id, listen_address, connected_peers, total_peers) =
|
||||
if let Some(ref peer_node) = state.kernel.peer_node {
|
||||
if let Some(peer_node) = state.kernel.peer_node.get() {
|
||||
let registry = peer_node.registry();
|
||||
(
|
||||
peer_node.node_id().to_string(),
|
||||
|
||||
@@ -45,7 +45,7 @@ pub async fn build_router(
|
||||
let state = Arc::new(AppState {
|
||||
kernel: kernel.clone(),
|
||||
started_at: Instant::now(),
|
||||
peer_registry: kernel.peer_registry.as_ref().map(|r| Arc::new(r.clone())),
|
||||
peer_registry: kernel.peer_registry.get().map(|r| Arc::new(r.clone())),
|
||||
bridge_manager: tokio::sync::Mutex::new(bridge),
|
||||
channels_config: tokio::sync::RwLock::new(channels_config),
|
||||
shutdown_notify: Arc::new(tokio::sync::Notify::new()),
|
||||
|
||||
@@ -949,7 +949,7 @@ async fn handle_command(
|
||||
let msg = if !state.kernel.config.network_enabled {
|
||||
"OFP network disabled.".to_string()
|
||||
} else {
|
||||
match &state.kernel.peer_registry {
|
||||
match state.kernel.peer_registry.get() {
|
||||
Some(registry) => {
|
||||
let peers = registry.all_peers();
|
||||
if peers.is_empty() {
|
||||
|
||||
@@ -141,10 +141,10 @@ pub struct OpenFangKernel {
|
||||
pub hooks: openfang_runtime::hooks::HookRegistry,
|
||||
/// Persistent process manager for interactive sessions (REPLs, servers).
|
||||
pub process_manager: Arc<openfang_runtime::process_manager::ProcessManager>,
|
||||
/// OFP peer registry — tracks connected peers.
|
||||
pub peer_registry: Option<openfang_wire::PeerRegistry>,
|
||||
/// OFP peer node — the local networking node.
|
||||
pub peer_node: Option<Arc<openfang_wire::PeerNode>>,
|
||||
/// OFP peer registry — tracks connected peers (OnceLock for safe init after Arc creation).
|
||||
pub peer_registry: OnceLock<openfang_wire::PeerRegistry>,
|
||||
/// OFP peer node — the local networking node (OnceLock for safe init after Arc creation).
|
||||
pub peer_node: OnceLock<Arc<openfang_wire::PeerNode>>,
|
||||
/// Boot timestamp for uptime calculation.
|
||||
pub booted_at: std::time::Instant,
|
||||
/// WhatsApp Web gateway child process PID (for shutdown cleanup).
|
||||
@@ -1036,8 +1036,8 @@ impl OpenFangKernel {
|
||||
auto_reply_engine,
|
||||
hooks: openfang_runtime::hooks::HookRegistry::new(),
|
||||
process_manager: Arc::new(openfang_runtime::process_manager::ProcessManager::new(5)),
|
||||
peer_registry: None,
|
||||
peer_node: None,
|
||||
peer_registry: OnceLock::new(),
|
||||
peer_node: OnceLock::new(),
|
||||
booted_at: std::time::Instant::now(),
|
||||
whatsapp_gateway_pid: Arc::new(std::sync::Mutex::new(None)),
|
||||
channel_adapters: dashmap::DashMap::new(),
|
||||
@@ -4184,14 +4184,8 @@ impl OpenFangKernel {
|
||||
"OFP peer node started"
|
||||
);
|
||||
|
||||
// SAFETY: These fields are only written once during startup.
|
||||
// We use unsafe to set them because start_background_agents runs
|
||||
// after the Arc is created and the kernel is otherwise immutable.
|
||||
let self_ptr = Arc::as_ptr(self) as *mut OpenFangKernel;
|
||||
unsafe {
|
||||
(*self_ptr).peer_registry = Some(registry.clone());
|
||||
(*self_ptr).peer_node = Some(node.clone());
|
||||
}
|
||||
let _ = self.peer_registry.set(registry.clone());
|
||||
let _ = self.peer_node.set(node.clone());
|
||||
|
||||
// Connect to bootstrap peers
|
||||
for peer_addr_str in &self.config.network.bootstrap_peers {
|
||||
|
||||
Reference in New Issue
Block a user