Skip to content

Commit 325b90f

Browse files
authored
refactor: proto fixups (#585)
* refactor: comment * refactor: restore binding to external address
1 parent 05f7469 commit 325b90f

File tree

5 files changed

+25
-28
lines changed

5 files changed

+25
-28
lines changed

cargo-shuttle/src/lib.rs

+9-10
Original file line numberDiff line numberDiff line change
@@ -459,10 +459,18 @@ impl Shuttle {
459459
}
460460
});
461461

462+
let addr = if run_args.external {
463+
std::net::IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))
464+
} else {
465+
Ipv4Addr::LOCALHOST.into()
466+
};
467+
468+
let addr = SocketAddr::new(addr, run_args.port);
469+
462470
let start_request = StartRequest {
463471
deployment_id: id.as_bytes().to_vec(),
464472
service_name,
465-
port: run_args.port as u32,
473+
ip: addr.to_string(),
466474
};
467475

468476
trace!(?start_request, "starting service");
@@ -479,15 +487,6 @@ impl Shuttle {
479487

480488
trace!(response = ?response, "client response: ");
481489

482-
// TODO: move to runtime
483-
let addr = if run_args.external {
484-
std::net::IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))
485-
} else {
486-
Ipv4Addr::LOCALHOST.into()
487-
};
488-
489-
let addr = SocketAddr::new(addr, run_args.port);
490-
491490
println!(
492491
"\n{:>12} {} on http://{}",
493492
"Starting".bold().green(),

deployer/src/deployment/run.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ async fn run(
288288
let start_request = tonic::Request::new(StartRequest {
289289
deployment_id: id.as_bytes().to_vec(),
290290
service_name: service_name.clone(),
291-
port: address.port() as u32,
291+
ip: address.to_string(),
292292
});
293293

294294
info!("starting service");

proto/runtime.proto

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ service Runtime {
1313
// Stop a started service
1414
rpc Stop(StopRequest) returns (StopResponse);
1515

16+
// Subscribe to runtime logs
1617
rpc SubscribeLogs(SubscribeLogsRequest) returns (stream LogItem);
1718
}
1819

@@ -37,8 +38,8 @@ message StartRequest {
3738
bytes deployment_id = 1;
3839
// Name of service to start
3940
string service_name = 2;
40-
// Port to start the service on
41-
uint32 port = 3;
41+
// Address and port to start the service on
42+
string ip = 3;
4243
}
4344

4445
message StartResponse {

runtime/src/axum/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::convert::Infallible;
22
use std::io::{BufReader, Read, Write};
3-
use std::net::{Ipv4Addr, SocketAddr};
3+
use std::net::SocketAddr;
44
use std::ops::DerefMut;
55
use std::os::unix::prelude::RawFd;
66
use std::path::{Path, PathBuf};
@@ -97,12 +97,12 @@ impl Runtime for AxumWasm {
9797
request: tonic::Request<StartRequest>,
9898
) -> Result<tonic::Response<StartResponse>, Status> {
9999
let StartRequest {
100-
deployment_id,
101-
port,
102-
..
100+
deployment_id, ip, ..
103101
} = request.into_inner();
104102

105-
let address = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), port as u16);
103+
let address = SocketAddr::from_str(&ip)
104+
.context("invalid socket address")
105+
.map_err(|err| Status::invalid_argument(err.to_string()))?;
106106

107107
let logs_tx = self.logs_tx.lock().unwrap().clone();
108108

runtime/src/legacy/mod.rs

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
use std::{
2-
collections::BTreeMap,
3-
iter::FromIterator,
4-
net::{Ipv4Addr, SocketAddr},
5-
ops::DerefMut,
6-
path::PathBuf,
7-
str::FromStr,
8-
sync::Mutex,
2+
collections::BTreeMap, iter::FromIterator, net::SocketAddr, ops::DerefMut, path::PathBuf,
3+
str::FromStr, sync::Mutex,
94
};
105

11-
use anyhow::anyhow;
6+
use anyhow::{anyhow, Context};
127
use async_trait::async_trait;
138
use shuttle_common::{storage_manager::StorageManager, LogItem};
149
use shuttle_proto::{
@@ -128,9 +123,11 @@ where
128123
let StartRequest {
129124
deployment_id,
130125
service_name,
131-
port,
126+
ip,
132127
} = request.into_inner();
133-
let service_address = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), port as u16);
128+
let service_address = SocketAddr::from_str(&ip)
129+
.context("invalid socket address")
130+
.map_err(|err| Status::invalid_argument(err.to_string()))?;
134131

135132
let service_name = ServiceName::from_str(service_name.as_str())
136133
.map_err(|err| Status::from_error(Box::new(err)))?;

0 commit comments

Comments
 (0)