Skip to content

Commit 5191e1a

Browse files
authored
Merge pull request restsend#74 from yeoleobun/patch0
fix after_received was called twice
2 parents 55b1da4 + 6e43ea4 commit 5191e1a

4 files changed

Lines changed: 33 additions & 33 deletions

File tree

src/dialog/publication.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use super::dialog::{DialogInnerRef, DialogState, TerminatedReason, TransactionHa
22
use super::DialogId;
33
use crate::Result;
44
use rsip::{Header, Method, StatusCode, StatusCodeKind};
5-
use tokio_util::sync::CancellationToken;
65
use std::sync::{Arc, Mutex};
6+
use tokio_util::sync::CancellationToken;
77

88
#[derive(Clone)]
99
pub struct ClientPublicationDialog {
@@ -109,7 +109,10 @@ impl ClientPublicationDialog {
109109
self.request(rsip::Method::Message, headers, body).await
110110
}
111111

112-
pub async fn handle(&mut self, tx: &mut crate::transaction::transaction::Transaction) -> Result<()> {
112+
pub async fn handle(
113+
&mut self,
114+
tx: &mut crate::transaction::transaction::Transaction,
115+
) -> Result<()> {
113116
match tx.original.method {
114117
Method::Publish => {
115118
let (handle, rx) = TransactionHandle::new();
@@ -155,19 +158,24 @@ impl ServerPublicationDialog {
155158
self.etag.lock().unwrap().clone()
156159
}
157160

158-
pub fn accept(&self, etag: String, headers: Option<Vec<Header>>, body: Option<Vec<u8>>) -> Result<()> {
161+
pub fn accept(
162+
&self,
163+
etag: String,
164+
headers: Option<Vec<Header>>,
165+
body: Option<Vec<u8>>,
166+
) -> Result<()> {
159167
let mut headers = headers.unwrap_or_default();
160168
headers.push(Header::Other("SIP-ETag".into(), etag.clone().into()));
161-
169+
162170
let resp = self.inner.make_response(
163171
&self.inner.initial_request.lock().unwrap(),
164172
StatusCode::OK,
165173
Some(headers),
166174
body,
167175
);
168-
176+
169177
*self.etag.lock().unwrap() = Some(etag);
170-
178+
171179
use crate::transaction::transaction::TransactionEvent;
172180
self.inner
173181
.tu_sender
@@ -224,7 +232,10 @@ impl ServerPublicationDialog {
224232
self.request(rsip::Method::Message, headers, body).await
225233
}
226234

227-
pub async fn handle(&mut self, tx: &mut crate::transaction::transaction::Transaction) -> Result<()> {
235+
pub async fn handle(
236+
&mut self,
237+
tx: &mut crate::transaction::transaction::Transaction,
238+
) -> Result<()> {
228239
match tx.original.method {
229240
Method::Publish => {
230241
let (handle, rx) = TransactionHandle::new();

src/dialog/tests/test_dialog_states.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ fn create_response(status: StatusCode, from_tag: &str, to_tag: &str, call_id: &s
5858
}
5959
}
6060

61-
pub async fn create_test_endpoint() -> crate::Result<crate::transaction::endpoint::Endpoint>
62-
{
61+
pub async fn create_test_endpoint() -> crate::Result<crate::transaction::endpoint::Endpoint> {
6362
let token = CancellationToken::new();
6463
let tl = TransportLayer::new(token.child_token());
6564
let endpoint = EndpointBuilder::new()

src/dialog/tests/test_sub_pub.rs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use rsip::Method;
2-
use crate::dialog::dialog_layer::DialogLayer;
31
use super::test_dialog_states::{create_invite_request, create_test_endpoint};
4-
use crate::transaction::transaction::Transaction;
5-
use crate::transaction::key::{TransactionKey, TransactionRole};
2+
use crate::dialog::dialog_layer::DialogLayer;
63
use crate::dialog::DialogId;
4+
use crate::transaction::key::{TransactionKey, TransactionRole};
5+
use crate::transaction::transaction::Transaction;
6+
use rsip::Method;
77
use std::sync::Arc;
88

99
#[tokio::test]
@@ -18,13 +18,9 @@ async fn test_server_subscription_creation() -> crate::Result<()> {
1818
let transaction = Transaction::new_server(key, subscribe_req, endpoint.inner.clone(), None);
1919

2020
let (state_sender, _state_receiver) = dialog_layer.new_dialog_state_channel();
21-
22-
let server_sub = dialog_layer.get_or_create_server_subscription(
23-
&transaction,
24-
state_sender,
25-
None,
26-
None
27-
)?;
21+
22+
let server_sub =
23+
dialog_layer.get_or_create_server_subscription(&transaction, state_sender, None, None)?;
2824

2925
assert_eq!(server_sub.id().call_id, "sub-call-id");
3026
assert_eq!(server_sub.id().from_tag, "alice-tag");
@@ -45,13 +41,9 @@ async fn test_server_publication_creation() -> crate::Result<()> {
4541
let transaction = Transaction::new_server(key, publish_req, endpoint.inner.clone(), None);
4642

4743
let (state_sender, _state_receiver) = dialog_layer.new_dialog_state_channel();
48-
49-
let server_pub = dialog_layer.get_or_create_server_publication(
50-
&transaction,
51-
state_sender,
52-
None,
53-
None
54-
)?;
44+
45+
let server_pub =
46+
dialog_layer.get_or_create_server_publication(&transaction, state_sender, None, None)?;
5547

5648
assert_eq!(server_pub.id().call_id, "pub-call-id");
5749
assert_eq!(server_pub.id().from_tag, "alice-tag");
@@ -86,10 +78,11 @@ async fn test_client_publication_etag_handling() -> crate::Result<()> {
8678
tu_sender,
8779
)?;
8880

89-
let client_pub = crate::dialog::publication::ClientPublicationDialog::new(Arc::new(dialog_inner));
90-
81+
let client_pub =
82+
crate::dialog::publication::ClientPublicationDialog::new(Arc::new(dialog_inner));
83+
9184
assert!(client_pub.etag().is_none());
92-
85+
9386
// Simulate receiving a 200 OK with SIP-ETag manually
9487
*client_pub.etag.lock().unwrap() = Some("test-etag".to_string());
9588
assert_eq!(client_pub.etag(), Some("test-etag".to_string()));

src/transaction/transaction.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,6 @@ impl Transaction {
522522
self.on_received_response(resp, connection).await
523523
}
524524
} {
525-
if let Some(ref inspector) = self.endpoint_inner.message_inspector {
526-
return Some(inspector.after_received(msg));
527-
}
528525
return Some(msg);
529526
}
530527
}

0 commit comments

Comments
 (0)