diff options
author | metamuffin <metamuffin@disroot.org> | 2024-11-19 02:08:52 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-11-19 02:08:52 +0100 |
commit | cbc111f90b5facc1f2a9dd79ced216279d6260af (patch) | |
tree | fa5a1d2d67874413d8e66673825c6789e8cc0945 /examples | |
parent | 2d9a31244eab6d3a9871369d3148de253e902d36 (diff) | |
download | sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar.bz2 sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar.zst |
move files + rtp parser
Diffstat (limited to 'examples')
-rw-r--r-- | examples/server.rs | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/examples/server.rs b/examples/server.rs deleted file mode 100644 index 02c06b4..0000000 --- a/examples/server.rs +++ /dev/null @@ -1,83 +0,0 @@ -use anyhow::Result; -use log::{info, warn}; -use sip::{ - encoding::{ - headermap::HeaderMap, - headers::{Contact, From, To, UserAgent, Via}, - method::Method, - response::Response, - status::Status, - }, - transaction::TransactionUser, - transport::tcp::TcpTransport, -}; -use std::net::SocketAddr; -use tokio::{ - net::{TcpListener, TcpStream}, - spawn, -}; - -#[tokio::main] -async fn main() -> Result<()> { - env_logger::init_from_env("LOG"); - let listener = TcpListener::bind("0.0.0.0:5060").await?; - info!("tcp listener bound to {}", listener.local_addr().unwrap()); - - loop { - let (stream, addr) = listener.accept().await?; - info!("connect {addr}"); - - spawn(async move { - if let Err(e) = handle_client(stream, addr).await { - warn!("client error: {e}") - } - info!("disconnect {addr}") - }); - } -} - -async fn handle_client(stream: TcpStream, addr: SocketAddr) -> Result<()> { - let transport = TcpTransport::new(stream).await?; - let tu = TransactionUser::new(transport); - loop { - let req = tu.process_incoming().await?; - - if req.method == Method::Register { - let from: From = req.headers.get_res()?; - let to: To = req.headers.get_res()?; - let via: Via = req.headers.get_res()?; - let contact: Contact = req.headers.get_res()?; - info!("Registered {}", contact.uri.localpart.as_ref().unwrap()); - - tu.respond( - &req, - Response { - status: Status::Ok, - headers: HeaderMap::new() - .add(contact) - .add(via) - .add(to) - .add(from) - .add(UserAgent("siptest v0.1.0".to_string())), - body: String::new(), - }, - ) - .await?; - } - if req.method == Method::Invite {} - } -} - -/* -[2024-07-05T22:22:40Z DEBUG sip::transport::udp] SIP/2.0 200 OK - Via: SIP/2.0/UDP 198.18.1.135:52125;branch=Uz7r7ysvrS91q9j9;rport=52125 - Contact: <sip:metatest-0x5e11f89f7900@198.18.1.135:40708>;expires=379;+sip.instance="<urn:uuid:9b2421ef-43ed-3b3b-9181-607ba5c13fb9>" - Contact: <sip:metatest-0x5e11f89f7900@198.18.1.135:47412>;expires=411 - Contact: <sip:metatest-0x5e11f89f7900@198.18.1.135:52125>;expires=600 - To: <sip:metatest@198.18.0.220>;tag=81756f4e - From: <sip:metatest@198.18.0.220>;tag=-AK4OkphTFVZv50h - Call-ID: U3Fyb6vT1BhWxiKG - CSeq: 1 REGISTER - User-Agent: AGFEO SIP V3.00.15 n (MAC=00094070069C) - Content-Length: 0 -*/ |