commit 718ba070f68cb1ae4db463b489cff7edfe75526f from: Omar Polo date: Fri Dec 22 17:21:15 2023 UTC rework the code to listen to localhost:9090 including ipv6 that is. commit - 44a85ec4df644043ad17162130c1cdda45f655dc commit + 718ba070f68cb1ae4db463b489cff7edfe75526f blob - 896efcc255f2bc838311a4dc59115f6522b86efc blob + 37902a1dabbdc48ef964d668ca1a648b1fe3054f --- shinsha.ha +++ shinsha.ha @@ -3,8 +3,8 @@ use fmt; use getopt; use io; use log; +use net::dial; use net::ip; -use net::tcp; use net; use os; use unix::signal; @@ -68,18 +68,25 @@ export fn main() void = { log::printfln("should use debug {} and verbose {}", debug, verbose); - // TODO: would be nice to do http::listen("localhost:9090")!; - const port = 9090u16; - const sock = match (tcp::listen(ip::LOCAL_V4, port, tcp::reuseaddr)) { - case let sock: net::socket => - yield sock; - case let err: net::error => - log::fatalf("failed to listen on {}: {}", port, - net::strerror(err)); + const addr = "localhost"; + const port = "9090"; + + let (ips, port) = match(dial::resolve("tcp", addr, port)) { + case let err: net::dial::error => + log::fatal("failed to resolve {}:{}: {}", addr, port, + dial::strerror(err)); + case let pair: ([]ip::addr, u16) => + yield pair; }; - defer net::close(sock)!; - http::listen_sock(sock, null); + for (let i = 0z; i < len(ips); i += 1) { + match (http::listen(ips[i], port, null)) { + case let err: net::error => + log::fatal("failed to listen to {}:{}: {}", + ip::string(ips[i]), port, net::strerror(err)); + case => yield; + }; + }; http::handle("/", &homepage); http::handle("/2", &page2); @@ -87,7 +94,7 @@ export fn main() void = { ev::signal(signal::sig::INT, &sighandler, null)!; ev::signal(signal::sig::TERM, &sighandler, null)!; - log::printfln("listening on port {}", port); + log::printfln("listening on {}:{}", addr, port); match (ev::mainloop()) { case void => yield; case let err: errors::error =>