send QUIT to all active connections
This commit is contained in:
parent
04478ffa0e
commit
aed3089995
|
@ -28,6 +28,16 @@ let find_chan t name =
|
||||||
let whowas t nick =
|
let whowas t nick =
|
||||||
Cache.find_all t.whowas (string_ci nick)
|
Cache.find_all t.whowas (string_ci nick)
|
||||||
|
|
||||||
|
let nuke t =
|
||||||
|
begin
|
||||||
|
Hashtbl.iter (fun _ u -> Dllist.reset u.membership) t.users;
|
||||||
|
Hashtbl.iter (fun _ c -> Dllist.reset c.members) t.channels;
|
||||||
|
Hashtbl.clear t.users;
|
||||||
|
Hashtbl.clear t.channels;
|
||||||
|
t.lusers <- 0;
|
||||||
|
t.luserchannels <- 0;
|
||||||
|
end
|
||||||
|
|
||||||
let relay ~(from : user) (msg : Msg.t) tgts =
|
let relay ~(from : user) (msg : Msg.t) tgts =
|
||||||
let msg =
|
let msg =
|
||||||
if msg.prefix = No_prefix then
|
if msg.prefix = No_prefix then
|
||||||
|
|
|
@ -200,8 +200,13 @@ let run {
|
||||||
in
|
in
|
||||||
notify `stopping;
|
notify `stopping;
|
||||||
|
|
||||||
(* TODO: send QUIT to all connections *)
|
|
||||||
|
|
||||||
info (fun m -> m "shutting down");
|
info (fun m -> m "shutting down");
|
||||||
Lwt_unix.close server
|
let* () = Lwt_unix.close server in
|
||||||
|
|
||||||
|
Router.nuke router;
|
||||||
|
Wheel.iter (fun conn -> Connection.close conn ~reason:"Server shutting down")
|
||||||
|
(* ping wheel should contain every active connection *)
|
||||||
|
ping_wheel;
|
||||||
|
|
||||||
|
(* give some time for the messages to send *)
|
||||||
|
Lwt_unix.sleep 0.5
|
||||||
|
|
Loading…
Reference in New Issue