From bb14e64e88441d5a7de86f2b3fd3770bb49fa82e Mon Sep 17 00:00:00 2001 From: Jake Hillion Date: Fri, 8 Apr 2022 12:58:36 +0100 Subject: [PATCH] implemented TcpListener --- src/spawner.rs | 10 +++++++++- src/specification.rs | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/spawner.rs b/src/spawner.rs index cbf86f8..c52ab57 100644 --- a/src/spawner.rs +++ b/src/spawner.rs @@ -9,6 +9,7 @@ use std::collections::HashMap; use std::ffi::CString; use std::fs::File; use std::io::Read; +use std::net::TcpListener; use std::os::unix::io::IntoRawFd; use std::path::PathBuf; @@ -192,7 +193,14 @@ impl<'a> Spawner<'a> { Arg::Pipe(p) => Err(Error::BadPipe(p.get_name().to_string())), Arg::Trigger => Ok(trigger.args()), - Arg::TcpListener { port: _port } => unimplemented!(), + + Arg::TcpListener { addr } => { + let listener = TcpListener::bind(addr)?; + let listener = listener.into_raw_fd(); + + Ok(vec![CString::new(listener.to_string()).unwrap()]) + } + Arg::Trailing => Ok(self .trailing .iter() diff --git a/src/specification.rs b/src/specification.rs index 29c0b55..eb85cb8 100644 --- a/src/specification.rs +++ b/src/specification.rs @@ -3,6 +3,7 @@ use log::debug; use crate::{Error, Result}; use std::collections::{HashMap, HashSet}; +use std::net::SocketAddr; use std::path::PathBuf; use ipnetwork::{Ipv4Network, Ipv6Network}; @@ -51,7 +52,7 @@ pub enum Arg { Trigger, /// A TCP Listener - TcpListener { port: u16 }, + TcpListener { addr: SocketAddr }, /// The rest of argv[1..], 0 or more arguments Trailing,