commit 71d9d1b3a833b3b8041da66cd1bccab141d2a9fa from: Omar Polo date: Fri Dec 22 08:02:43 2023 UTC http: move listen to its own file commit - 94691153c4c35c89935793ee6ddd108306bac566 commit + 71d9d1b3a833b3b8041da66cd1bccab141d2a9fa blob - c7ac521478186bb7bea8b5f7b1d11cc26867a89c blob + 42310276aa55497370d2c5580474ae784cb0f663 --- http/http.ha +++ http/http.ha @@ -75,17 +75,6 @@ type connection = struct { mux: *mux, }; -// XXX generic listen would be very handy! -// something like: http::listen("localhost:8080") or maybe even -// http::listen("unix:/run/foo.sock") - -export fn listen_sock(f: io::file, mux: nullable *mux) void = { - ev::add(f, ev::READ, &acceptconn, match(mux) { - case null => yield &global; - case => yield mux; - }); -}; - fn acceptconn(f: io::file, ev: ev::event, data: nullable *opaque) void = { let sock = match(net::accept(f, net::sockflag::NONBLOCK)) { case let err: net::error => blob - /dev/null blob + 0d9c7994a7ab2346a7b0ed2658822cebcd5d2c7f (mode 644) --- /dev/null +++ http/listen.ha @@ -0,0 +1,39 @@ +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. +// +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +use io; +use net::dns; +use strings; + +use ev; + +// XXX generic listen would be very handy! +// something like: http::listen("localhost:8080") or maybe even +// http::listen("unix:/run/foo.sock") + +export fn listen_sock(f: io::file, mux: nullable *mux) void = { + ev::add(f, ev::READ, &acceptconn, match(mux) { + case null => yield &global; + case => yield mux; + }); +};