mirror of
https://github.com/scsibug/nostr-rs-relay.git
synced 2024-11-14 15:09:07 -05:00
NOTICE sent for parsing errors
This commit is contained in:
parent
96f46866f7
commit
60319999a6
37
Cargo.lock
generated
37
Cargo.lock
generated
|
@ -158,18 +158,16 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-core"
|
name = "futures-core"
|
||||||
version = "0.3.17"
|
version = "0.3.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
|
checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-macro"
|
name = "futures-macro"
|
||||||
version = "0.3.17"
|
version = "0.3.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb"
|
checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 1.0.1",
|
|
||||||
"proc-macro-hack",
|
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn",
|
"syn",
|
||||||
|
@ -177,31 +175,28 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-sink"
|
name = "futures-sink"
|
||||||
version = "0.3.17"
|
version = "0.3.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
|
checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-task"
|
name = "futures-task"
|
||||||
version = "0.3.17"
|
version = "0.3.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
|
checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.17"
|
version = "0.3.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
|
checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 1.0.1",
|
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-macro",
|
"futures-macro",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"pin-utils",
|
"pin-utils",
|
||||||
"proc-macro-hack",
|
|
||||||
"proc-macro-nested",
|
|
||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -442,18 +437,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
|
checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro-hack"
|
|
||||||
version = "0.5.19"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro-nested"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.32"
|
version = "1.0.32"
|
||||||
|
|
|
@ -9,7 +9,7 @@ edition = "2018"
|
||||||
log = "0.4.14"
|
log = "0.4.14"
|
||||||
env_logger = "0.9.0"
|
env_logger = "0.9.0"
|
||||||
tokio = { version = "1.14.0", features = ["full"] }
|
tokio = { version = "1.14.0", features = ["full"] }
|
||||||
futures-util = "0.3.17"
|
futures-util = "0.3.18"
|
||||||
tokio-tungstenite = "0.16.0"
|
tokio-tungstenite = "0.16.0"
|
||||||
tungstenite = "0.16.0"
|
tungstenite = "0.16.0"
|
||||||
thiserror = "1.0.30"
|
thiserror = "1.0.30"
|
||||||
|
|
18
src/main.rs
18
src/main.rs
|
@ -1,8 +1,10 @@
|
||||||
use std::{env, io::Error};
|
use std::{env, io::Error};
|
||||||
|
|
||||||
|
//use futures::stream::SplitSink;
|
||||||
use futures_util::{SinkExt, StreamExt};
|
use futures_util::{SinkExt, StreamExt};
|
||||||
use log::{debug, info, warn};
|
use log::{debug, info, warn};
|
||||||
use nostr_rs_relay::proto::Proto;
|
use nostr_rs_relay::proto::Proto;
|
||||||
|
//use tokio::io::{ReadHalf, WriteHalf};
|
||||||
use tokio::net::{TcpListener, TcpStream};
|
use tokio::net::{TcpListener, TcpStream};
|
||||||
use tokio::runtime::Builder;
|
use tokio::runtime::Builder;
|
||||||
use tokio_tungstenite::WebSocketStream;
|
use tokio_tungstenite::WebSocketStream;
|
||||||
|
@ -73,6 +75,7 @@ async fn nostr_server(stream: TcpStream) {
|
||||||
async fn process_client(stream: WebSocketStream<TcpStream>) {
|
async fn process_client(stream: WebSocketStream<TcpStream>) {
|
||||||
// get a protocol helper;
|
// get a protocol helper;
|
||||||
let mut proto = Proto::new();
|
let mut proto = Proto::new();
|
||||||
|
// futures::stream::Stream?
|
||||||
let (mut write, mut read) = stream.split();
|
let (mut write, mut read) = stream.split();
|
||||||
// TODO: select on a timeout to kill non-responsive clients
|
// TODO: select on a timeout to kill non-responsive clients
|
||||||
|
|
||||||
|
@ -91,7 +94,20 @@ async fn process_client(stream: WebSocketStream<TcpStream>) {
|
||||||
.await
|
.await
|
||||||
.expect("send failed");
|
.expect("send failed");
|
||||||
// Handle this request. Everything else below is basically websocket error handling.
|
// Handle this request. Everything else below is basically websocket error handling.
|
||||||
proto.process_message(cmd).ok();
|
let proto_error = proto.process_message(cmd);
|
||||||
|
match proto_error {
|
||||||
|
Err(_) => {
|
||||||
|
write
|
||||||
|
.send(Message::Text(
|
||||||
|
"[\"NOTICE\", \"Failed to process message.\"]".to_owned(),
|
||||||
|
))
|
||||||
|
.await
|
||||||
|
.expect("send failed");
|
||||||
|
}
|
||||||
|
Ok(_) => {
|
||||||
|
info!("Message processed successfully");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(Message::Binary(_)) => {
|
Ok(Message::Binary(_)) => {
|
||||||
info!("Ignoring Binary message");
|
info!("Ignoring Binary message");
|
||||||
|
|
|
@ -27,7 +27,7 @@ impl Proto {
|
||||||
p
|
p
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: figure out NOTICE handling for errors here
|
// Error results will be transformed into client NOTICEs
|
||||||
pub fn process_message(&mut self, cmd: String) -> Result<()> {
|
pub fn process_message(&mut self, cmd: String) -> Result<()> {
|
||||||
info!(
|
info!(
|
||||||
"Processing message in proto for client: {:?}",
|
"Processing message in proto for client: {:?}",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user