Fix permissions, daemonize
This commit is contained in:
+7
-10
@@ -25,12 +25,6 @@ mod port_set;
|
||||
fn run() -> Result<()> {
|
||||
use syscall::flag::*;
|
||||
|
||||
logger::init_logger();
|
||||
|
||||
// if unsafe { syscall::clone(0).unwrap() } != 0 {
|
||||
// return Ok(());
|
||||
// }
|
||||
|
||||
trace!("opening network:");
|
||||
let network_fd = syscall::open("network:", O_RDWR | O_NONBLOCK)
|
||||
.map_err(|e| Error::from_syscall_error(e, "failed to open network:"))?
|
||||
@@ -126,9 +120,12 @@ fn run() -> Result<()> {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if let Err(err) = run() {
|
||||
error!("smoltcpd: {}", err);
|
||||
process::exit(1);
|
||||
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
||||
logger::init_logger();
|
||||
|
||||
if let Err(err) = run() {
|
||||
error!("smoltcpd: {}", err);
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
process::exit(0);
|
||||
}
|
||||
|
||||
@@ -126,9 +126,9 @@ impl Smolnetd {
|
||||
fn poll(&mut self) -> Result<()> {
|
||||
let timestamp = self.get_timestamp();
|
||||
// trace!("Poll {}", timestamp);
|
||||
self.iface
|
||||
.poll(&mut *self.socket_set.borrow_mut(), timestamp)
|
||||
.expect("poll error");
|
||||
if let Err(err) = self.iface.poll(&mut *self.socket_set.borrow_mut(), timestamp) {
|
||||
error!("poll error: {}", err);
|
||||
}
|
||||
self.notify_sockets()
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ use std::ops::DerefMut;
|
||||
use syscall::data::TimeSpec;
|
||||
use syscall;
|
||||
|
||||
use super::Smolnetd;
|
||||
use port_set::PortSet;
|
||||
|
||||
pub type TcpScheme = SocketScheme<TcpSocket<'static>>;
|
||||
@@ -109,7 +108,7 @@ impl<'a> SchemeSocket for TcpSocket<'a> {
|
||||
let remote_endpoint = parse_endpoint(parts.next().unwrap_or(""));
|
||||
let mut local_endpoint = parse_endpoint(parts.next().unwrap_or(""));
|
||||
|
||||
if local_endpoint.port <= 1024 && uid != 0 {
|
||||
if local_endpoint.port > 0 && local_endpoint.port <= 1024 && uid != 0 {
|
||||
return Err(syscall::Error::new(syscall::EACCES));
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ impl<'a, 'b> SchemeSocket for UdpSocket<'a, 'b> {
|
||||
let remote_endpoint = parse_endpoint(parts.next().unwrap_or(""));
|
||||
let mut local_endpoint = parse_endpoint(parts.next().unwrap_or(""));
|
||||
|
||||
if local_endpoint.port <= 1024 && uid != 0 {
|
||||
if local_endpoint.port > 0 && local_endpoint.port <= 1024 && uid != 0 {
|
||||
return Err(syscall::Error::new(syscall::EACCES));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user