commit - 44a85ec4df644043ad17162130c1cdda45f655dc
commit + 718ba070f68cb1ae4db463b489cff7edfe75526f
blob - 896efcc255f2bc838311a4dc59115f6522b86efc
blob + 37902a1dabbdc48ef964d668ca1a648b1fe3054f
--- shinsha.ha
+++ shinsha.ha
use getopt;
use io;
use log;
+use net::dial;
use net::ip;
-use net::tcp;
use net;
use os;
use unix::signal;
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);
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 =>