@@ -52,7 +52,6 @@ function update_and_close_viewers!(
52
52
@sync for wsᵢ in ws_to_update_and_close
53
53
isopen (wsᵢ. io) && @spawn begin
54
54
try
55
- redirect_stderr ()
56
55
HTTP. WebSockets. send (wsᵢ, " update" )
57
56
catch
58
57
end
@@ -64,7 +63,6 @@ function update_and_close_viewers!(
64
63
@sync for wsi in ws_to_update_and_close
65
64
isopen (wsi. io) && @spawn begin
66
65
try
67
- redirect_stderr ()
68
66
wsi. writeclosed = wsi. readclosed = true
69
67
close (wsi. io)
70
68
catch
@@ -618,6 +616,15 @@ current directory. (See also [`example`](@ref) for an example folder).
618
616
)
619
617
end
620
618
619
+ old_logger = global_logger ()
620
+ old_stderr = stderr
621
+ global_logger (
622
+ EarlyFilteredLogger (
623
+ log -> log. _module != = HTTP. Servers,
624
+ global_logger ()
625
+ )
626
+ )
627
+
621
628
server, port = get_server (host, port, req_handler)
622
629
host_str = ifelse (host == string (Sockets. localhost), " localhost" , host)
623
630
url = " http://$host_str :$port "
@@ -676,6 +683,13 @@ current directory. (See also [`example`](@ref) for an example folder).
676
683
reset_ws_interrupt ()
677
684
println (" ✓" )
678
685
end
686
+
687
+ # given that LiveServer is interrupted via an InterruptException, we have
688
+ # to be extra careful that things are back as they were before, otherwise
689
+ # there's a high risk of the disgusting broken pipe error...
690
+ redirect_stderr (old_stderr)
691
+ global_logger (old_logger)
692
+
679
693
return nothing
680
694
end
681
695
@@ -697,7 +711,6 @@ function get_server(
697
711
incr >= 10 && @error " couldn't find a free port in $incr tries"
698
712
try
699
713
server = HTTP. listen! (host, port; readtimeout= 0 , verbose= - 1 ) do http:: HTTP.Stream
700
- redirect_stderr ()
701
714
if HTTP. WebSockets. isupgrade (http. message)
702
715
# upgrade to websocket and add to list of viewers and keep open
703
716
# until written to
0 commit comments