--------------------------------- Captured Out --------------------------------- ---- new test ---- 1786476459.464 sable_ircd uid=1001 1786476459.467 sable_ircd #x1B[2m2026-08-11T19:27:39.467174Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::eventlog#x1B[0m#x1B[2m:#x1B[0m Adding event Event { id: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, clock: EventClock(), target: Server(ServerId(1)), details: NewServer(NewServer { epoch: 1786476459, name: ServerName("My.Little.Server"), ts: 1786476459, flags: (empty), version: "sable-0.1.0-70e61b4cc015537d8906da5286f062a8199fb432" }) }; event clock=EventClock() my clock=EventClock() 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467317Z#x1B[0m #x1B[32m INFO#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m No peers available to propagate message 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467602Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun#x1B[0m#x1B[2m:#x1B[0m#x1B[1mapply_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3mevent#x1B[0m#x1B[2m=#x1B[0mEvent { id: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, clock: EventClock(), target: Server(ServerId(1)), details: NewServer(NewServer { epoch: 1786476459, name: ServerName("My.Little.Server"), ts: 1786476459, flags: (empty), version: "sable-0.1.0-70e61b4cc015537d8906da5286f062a8199fb432" }) }#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m#x1B[1mhandle_new_server#x1B[0m#x1B[1m{#x1B[0m#x1B[3mdetail#x1B[0m#x1B[2m=#x1B[0mNewServer { server: ServerId(1) }#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m enabling peer My.Little.Server 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467731Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from history_receiver #x1B[3mres#x1B[0m#x1B[2m=#x1B[0mSome(NetworkHistoryUpdate { event: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, change: NewServer(NewServer { server: ServerId(1) }), users_to_notify: [] }) 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467805Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server::update_handler#x1B[0m#x1B[2m:#x1B[0m Got history update #x1B[3mupdate#x1B[0m#x1B[2m=#x1B[0mNetworkHistoryUpdate { event: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, change: NewServer(NewServer { server: ServerId(1) }), users_to_notify: [] } 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467878Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from history_receiver #x1B[3mres#x1B[0m#x1B[2m=#x1B[0mSome(NetworkHistoryUpdate { event: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, change: EventComplete(EventComplete), users_to_notify: [] }) 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467936Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server::update_handler#x1B[0m#x1B[2m:#x1B[0m Got history update #x1B[3mupdate#x1B[0m#x1B[2m=#x1B[0mNetworkHistoryUpdate { event: EventId(Snowflake(875098158261080064)), timestamp: 1786476459, change: EventComplete(EventComplete), users_to_notify: [] } 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.467936Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::eventlog#x1B[0m#x1B[2m:#x1B[0m Adding event Event { id: EventId(Snowflake(875098158261080065)), timestamp: 1786476459, clock: EventClock(1 => 875098158261080064), target: Server(ServerId(1)), details: ServerPing(ServerPing { ts: 1786476459 }) }; event clock=EventClock(1 => 875098158261080064) my clock=EventClock(1 => 875098158261080064) 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.468064Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from reap_preclients_timer 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.468072Z#x1B[0m #x1B[32m INFO#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m No peers available to propagate message 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.468321Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from history_receiver #x1B[3mres#x1B[0m#x1B[2m=#x1B[0mSome(NetworkHistoryUpdate { event: EventId(Snowflake(875098158261080065)), timestamp: 1786476459, change: EventComplete(EventComplete), users_to_notify: [] }) 1786476459.468 sable_ircd #x1B[2m2026-08-11T19:27:39.468358Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server::update_handler#x1B[0m#x1B[2m:#x1B[0m Got history update #x1B[3mupdate#x1B[0m#x1B[2m=#x1B[0mNetworkHistoryUpdate { event: EventId(Snowflake(875098158261080065)), timestamp: 1786476459, change: EventComplete(EventComplete), users_to_notify: [] } 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.559715Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun_communication_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2mclient_listener::listener_collection#x1B[0m#x1B[2m:#x1B[0m got new connection #x1B[3mdata#x1B[0m#x1B[2m=#x1B[0mConnectionData { id: ConnectionId(ListenerId(0), 1), remote_addr: 127.0.0.1, tls_info: None } 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.559860Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.559929Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 1)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m Got new connection 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.560019Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 1)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::client#x1B[0m#x1B[2m:#x1B[0m Sending to ConnectionId(ListenerId(0), 1): :My.Little.Server NOTICE * :*** Looking up your hostname 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.560217Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.560282Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 1)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m Got message #x1B[3mmsg#x1B[0m#x1B[2m=#x1B[0m"QUIT :chkport" 1786476459.560 sable_ircd #x1B[2m2026-08-11T19:27:39.560433Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::client#x1B[0m#x1B[2m:#x1B[0m Sending to ConnectionId(ListenerId(0), 1): ERROR :Client quit 1786476459.561 sable_ircd #x1B[2m2026-08-11T19:27:39.560574Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m Got pending CommandAction #x1B[3mact#x1B[0m#x1B[2m=#x1B[0mCloseConnection(ConnectionId(ListenerId(0), 1)) 1786476459.561 sable_ircd #x1B[2m2026-08-11T19:27:39.560616Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::connection_collection#x1B[0m#x1B[2m:#x1B[0m Removing connection ConnectionId(ListenerId(0), 1) 1786476459.561 sable_ircd #x1B[2m2026-08-11T19:27:39.561051Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun_communication_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2mclient_listener::listener_collection#x1B[0m#x1B[2m:#x1B[0m Connection error #x1B[3mconnection#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 1) #x1B[3merror#x1B[0m#x1B[2m=#x1B[0mClosed 1786476459.561 sable_ircd #x1B[2m2026-08-11T19:27:39.561134Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.561 sable_ircd #x1B[2m2026-08-11T19:27:39.561343Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from auth_events 1786476459.581 1: connects to server. 1786476459.581 1 -> S: NICK foo 1 -> S (repr): b'USER username * * :i\xe8rc\xe9\r\n' 1786476459.581 sable_ircd #x1B[2m2026-08-11T19:27:39.581351Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun_communication_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2mclient_listener::listener_collection#x1B[0m#x1B[2m:#x1B[0m got new connection #x1B[3mdata#x1B[0m#x1B[2m=#x1B[0mConnectionData { id: ConnectionId(ListenerId(0), 2), remote_addr: 127.0.0.1, tls_info: None } 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581467Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun_communication_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2mclient_listener::listener_collection#x1B[0m#x1B[2m:#x1B[0m Connection error #x1B[3mconnection#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2) #x1B[3merror#x1B[0m#x1B[2m=#x1B[0mIoError("stream did not contain valid UTF-8") 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581592Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581632Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m Got new connection 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581698Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::client#x1B[0m#x1B[2m:#x1B[0m Sending to ConnectionId(ListenerId(0), 2): :My.Little.Server NOTICE * :*** Looking up your hostname 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581851Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.581909Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m Got message #x1B[3mmsg#x1B[0m#x1B[2m=#x1B[0m"NICK foo" 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.582100Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::client#x1B[0m#x1B[2m:#x1B[0m PreClient::can_register #x1B[3mself#x1B[0m#x1B[2m=#x1B[0mPreClient { connected_at: Instant { tv_sec: 236, tv_nsec: 642173272 }, attach_user_id: OnceLock(), user: OnceLock(), extra_user_params: OnceLock(), nick: OnceLock(Nickname("foo")), realname: OnceLock(), hostname: OnceLock(), sasl_session: Mutex { data: None }, sasl_account: OnceLock(), progress_flags: 0 } #x1B[3mcan_register_new#x1B[0m#x1B[2m=#x1B[0mfalse #x1B[3mcan_attach#x1B[0m#x1B[2m=#x1B[0mfalse 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.582160Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from async_handlers 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.582192Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.582226Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::client#x1B[0m#x1B[2m:#x1B[0m Sending to ConnectionId(ListenerId(0), 2): ERROR :I/O Error: stream did not contain valid UTF-8 1786476459.582 sable_ircd #x1B[2m2026-08-11T19:27:39.582261Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m#x1B[1mprocess_connection_event#x1B[0m#x1B[1m{#x1B[0m#x1B[3msource#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2)#x1B[1m}#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::connection_collection#x1B[0m#x1B[2m:#x1B[0m Removing connection ConnectionId(ListenerId(0), 2) 1786476459.583 sable_ircd #x1B[2m2026-08-11T19:27:39.582758Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1mrun_communication_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2mclient_listener::listener_collection#x1B[0m#x1B[2m:#x1B[0m Connection error #x1B[3mconnection#x1B[0m#x1B[2m=#x1B[0mConnectionId(ListenerId(0), 2) #x1B[3merror#x1B[0m#x1B[2m=#x1B[0mClosed 1786476459.583 sable_ircd #x1B[2m2026-08-11T19:27:39.582842Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from connection_events 1786476459.583 sable_ircd #x1B[2m2026-08-11T19:27:39.583014Z#x1B[0m #x1B[35mTRACE#x1B[0m #x1B[1mdo_run#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_ircd::server#x1B[0m#x1B[2m:#x1B[0m ...from auth_events 1786476459.864 sable_history #x1B[2m2027-08-11T19:53:51.132660Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::eventlog#x1B[0m#x1B[2m:#x1B[0m Adding event Event { id: EventId(Snowflake(1007376321241882656)), timestamp: 1818014031, clock: EventClock(1 => 1007370015864786977, 50 => 1007376069583642655, 99 => 1007370023867920389), target: Server(ServerId(50)), details: ServerPing(ServerPing { ts: 1818014031 }) }; event clock=EventClock(1 => 1007370015864786977, 50 => 1007376069583642655, 99 => 1007370023867920389) my clock=EventClock(1 => 1007370015864786977, 50 => 1007376069583642655, 99 => 1007370023867920389) 1786476459.864 sable_history #x1B[2m2027-08-11T19:53:51.134382Z#x1B[0m #x1B[32m INFO#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m No peers available to propagate message 1786476460.060 sable_history #x1B[2m2027-08-11T19:51:02.835728Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::eventlog#x1B[0m#x1B[2m:#x1B[0m Adding event Event { id: EventId(Snowflake(1007375615357296668)), timestamp: 1818013862, clock: EventClock(1 => 1007369312341594113, 50 => 1007375363699056667), target: Server(ServerId(50)), details: ServerPing(ServerPing { ts: 1818013862 }) }; event clock=EventClock(1 => 1007369312341594113, 50 => 1007375363699056667) my clock=EventClock(1 => 1007369312341594113, 50 => 1007375363699056667) 1786476460.060 sable_history #x1B[2m2027-08-11T19:51:02.837882Z#x1B[0m #x1B[32m INFO#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m No peers available to propagate message 1786476460.560 sable_history #x1B[2m2027-08-11T19:51:03.443224Z#x1B[0m #x1B[34mDEBUG#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::eventlog#x1B[0m#x1B[2m:#x1B[0m Adding event Event { id: EventId(Snowflake(1007375617903239196)), timestamp: 1818013863, clock: EventClock(1 => 1007369314333888513, 50 => 1007375366240804891), target: Server(ServerId(50)), details: ServerPing(ServerPing { ts: 1818013863 }) }; event clock=EventClock(1 => 1007369314333888513, 50 => 1007375366240804891) my clock=EventClock(1 => 1007369314333888513, 50 => 1007375366240804891) 1786476460.560 sable_history #x1B[2m2027-08-11T19:51:03.445541Z#x1B[0m #x1B[32m INFO#x1B[0m #x1B[1msync_task#x1B[0m#x1B[2m:#x1B[0m #x1B[2msable_network::sync::network#x1B[0m#x1B[2m:#x1B[0m No peers available to propagate message S -> 1 (repr): b':My.Little.Server NOTICE * :*** Looking up your hostname\r\nERROR :I/O Error: stream did not contain valid UTF-8\r\n' 1786476460.584 1: disconnects from server.