Module: sip-router
Branch: treimann/master_tm-extend-callbacks
Commit: 68017b5dc43f0daf6bcf0d2fd2ab6eb70d6a2a88
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=68017b5…
Author: Timo Reimann <timo.reimann(a)1und1.de>
Committer: Timo Reimann <timo.reimann(a)1und1.de>
Date: Wed Oct 5 10:57:13 2011 +0200
tm: Rename run_onsend_callbacks[2]; update, and extend
documentation.
- run_onsend_callbacks -> run_trans_callbacks_with_buf.
- run_onsend_callbacks2 -> run_trans_callbacks_off_params.
---
modules/tm/t_cancel.c | 2 +-
modules/tm/t_fwd.c | 8 ++++----
modules/tm/t_hooks.c | 8 +++++---
modules/tm/t_hooks.h | 13 ++++++++-----
modules/tm/t_reply.c | 24 ++++++++++++------------
modules/tm/timer.c | 4 ++--
modules/tm/uac.c | 6 +++---
7 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/modules/tm/t_cancel.c b/modules/tm/t_cancel.c
index 6ee8774..8057ae4 100644
--- a/modules/tm/t_cancel.c
+++ b/modules/tm/t_cancel.c
@@ -328,7 +328,7 @@ int cancel_branch( struct cell *t, int branch,
DBG("DEBUG: cancel_branch: sending cancel...\n");
if (SEND_BUFFER( crb )>=0){
if (unlikely (has_tran_tmcbs(t, TMCB_REQUEST_SENT)))
- run_onsend_callbacks(TMCB_REQUEST_SENT, crb, 0, 0, TMCB_LOCAL_F);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT, crb, 0, 0, TMCB_LOCAL_F);
}
/*sets and starts the FINAL RESPONSE timer */
if (start_retr( crb )!=0)
diff --git a/modules/tm/t_fwd.c b/modules/tm/t_fwd.c
index 1fb9cf7..819c831 100644
--- a/modules/tm/t_fwd.c
+++ b/modules/tm/t_fwd.c
@@ -1190,9 +1190,9 @@ void e2e_cancel( struct sip_msg *cancel_msg,
}
else{
if (unlikely(has_tran_tmcbs(t_cancel, TMCB_REQUEST_SENT)))
- run_onsend_callbacks(TMCB_REQUEST_SENT,
- &t_cancel->uac[i].request,
- cancel_msg, 0, TMCB_LOCAL_F);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT,
+ &t_cancel->uac[i].request,
+ cancel_msg, 0, TMCB_LOCAL_F);
}
if (start_retr( &t_cancel->uac[i].request )!=0)
LOG(L_CRIT, "BUG: e2e_cancel: failed to start retr."
@@ -1381,7 +1381,7 @@ int t_send_branch( struct cell *t, int branch, struct sip_msg* p_msg
,
return -2;
} else {
if (unlikely(has_tran_tmcbs(t, TMCB_REQUEST_SENT)))
- run_onsend_callbacks(TMCB_REQUEST_SENT, &uac->request, p_msg, 0,0);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT, &uac->request, p_msg, 0,0);
/* start retr. only if the send succeeded */
if (start_retr( &uac->request )!=0){
LOG(L_CRIT, "BUG: t_send_branch: retr. already started for %p\n",
diff --git a/modules/tm/t_hooks.c b/modules/tm/t_hooks.c
index f996586..dd17da4 100644
--- a/modules/tm/t_hooks.c
+++ b/modules/tm/t_hooks.c
@@ -319,8 +319,9 @@ void run_trans_callbacks( int type , struct cell *trans,
-void run_onsend_callbacks(int type, struct retr_buf* rbuf,
- struct sip_msg* req, struct sip_msg* repl, short flags)
+void run_trans_callbacks_with_buf(int type, struct retr_buf* rbuf,
+ struct sip_msg* req, struct sip_msg* repl,
+ short flags)
{
struct tmcb_params params;
struct cell * trans;
@@ -336,7 +337,8 @@ void run_onsend_callbacks(int type, struct retr_buf* rbuf,
}
-void run_onsend_callbacks2(int type, struct cell* trans, struct tmcb_params* p)
+void run_trans_callbacks_off_params(int type, struct cell* trans,
+ struct tmcb_params* p)
{
if (p->t_rbuf==0) return;
diff --git a/modules/tm/t_hooks.h b/modules/tm/t_hooks.h
index 0432aa6..6f4dc08 100644
--- a/modules/tm/t_hooks.h
+++ b/modules/tm/t_hooks.h
@@ -294,7 +294,7 @@ struct cell;
* you really know what you're doing).
*
* TMCB_REQUEST_SENT -- called each time a request was sent (even for
- * retransmissions), it includes * local and forwarded request, ser generated
+ * retransmissions), it includes local and forwarded request, ser generated
* CANCELs and ACKs. The tmcb_params structure will have the t_rbuf, dst,
* send_buf and is_retr members filled.
* This callback is "read-only", the message was already sent and no changes
@@ -444,9 +444,12 @@ void run_reqin_callbacks( struct cell *trans, struct sip_msg *req,
int code );
void run_local_reqin_callbacks( struct cell *trans, struct sip_msg *req,
int code );
-/* TBD: explanation */
-void run_onsend_callbacks(int type, struct retr_buf* rbuf, struct sip_msg* req,
- struct sip_msg* repl, short flags);
-void run_onsend_callbacks2(int type, struct cell* t, struct tmcb_params* p);
+/* like run_trans_callbacks but provide outgoing buffer (i.e., the
+ * processed message) to callback */
+void run_trans_callbacks_with_buf(int type, struct retr_buf* rbuf, struct sip_msg* req,
+ struct sip_msg* repl, short flags);
+
+/* like run_trans_callbacks but tmcb_params assumed to contain data already */
+void run_trans_callbacks_off_params(int type, struct cell* t, struct tmcb_params* p);
#endif
diff --git a/modules/tm/t_reply.c b/modules/tm/t_reply.c
index b4ee307..50ef8c9 100644
--- a/modules/tm/t_reply.c
+++ b/modules/tm/t_reply.c
@@ -655,8 +655,8 @@ static int _reply_light( struct cell *trans, char* buf, unsigned int
len,
INIT_TMCB_ONSEND_PARAMS(onsend_params, trans->uas.request,
FAKED_REPLY, rb, &rb->dst,
buf, len, TMCB_LOCAL_F, rb->branch, code);
- run_onsend_callbacks2(TMCB_RESPONSE_SENT, trans,
- &onsend_params);
+ run_trans_callbacks_off_params(TMCB_RESPONSE_SENT, trans,
+ &onsend_params);
}
}
DBG("DEBUG: reply sent out. buf=%p: %.20s..., shmem=%p: %.20s\n",
@@ -1443,8 +1443,8 @@ int t_retransmit_reply( struct cell *t )
if (unlikely(has_tran_tmcbs(t, TMCB_RESPONSE_SENT))){
/* we don't know if it's a retransmission of a local reply or a
* forwarded reply */
- run_onsend_callbacks(TMCB_RESPONSE_SENT, &t->uas.response, 0, 0,
- TMCB_RETR_F);
+ run_trans_callbacks_with_buf(TMCB_RESPONSE_SENT, &t->uas.response, 0, 0,
+ TMCB_RETR_F);
}
DBG("DEBUG: reply retransmitted. buf=%p: %.9s..., shmem=%p: %.9s\n",
b, b, t->uas.response.buffer, t->uas.response.buffer );
@@ -1829,7 +1829,7 @@ enum rps relay_reply( struct cell *t, struct sip_msg *p_msg, int
branch,
res_len,
(relayed_msg==FAKED_REPLY)?TMCB_LOCAL_F:0,
uas_rb->branch, relayed_code);
- run_onsend_callbacks2(TMCB_RESPONSE_SENT, t, &onsend_params);
+ run_trans_callbacks_off_params(TMCB_RESPONSE_SENT, t, &onsend_params);
}
} else if (unlikely(uas_rb->dst.send_sock == 0))
ERR("no resolved dst to send reply to\n");
@@ -2068,8 +2068,8 @@ int reply_received( struct sip_msg *p_msg )
t->uas.request, p_msg, &uac->request,
&uac->request.dst, ack, ack_len,
TMCB_LOCAL_F, branch, TYPE_LOCAL_ACK);
- run_onsend_callbacks2(TMCB_REQUEST_SENT, t,
- &onsend_params);
+ run_trans_callbacks_off_params(TMCB_REQUEST_SENT, t,
+ &onsend_params);
}
shm_free(ack);
}
@@ -2083,8 +2083,8 @@ int reply_received( struct sip_msg *p_msg )
t->uas.request, p_msg, &uac->request,
&lack_dst, ack, ack_len, TMCB_LOCAL_F,
branch, TYPE_LOCAL_ACK);
- run_onsend_callbacks2(TMCB_REQUEST_SENT, t,
- &onsend_params);
+ run_trans_callbacks_off_params(TMCB_REQUEST_SENT, t,
+ &onsend_params);
}
#ifndef WITH_AS_SUPPORT
shm_free(ack);
@@ -2103,9 +2103,9 @@ int reply_received( struct sip_msg *p_msg )
DBG("tm: reply_received: branch CANCEL retransmit\n");
if (SEND_BUFFER( &uac->local_cancel)>=0){
if (unlikely (has_tran_tmcbs(t, TMCB_REQUEST_SENT)))
- run_onsend_callbacks(TMCB_REQUEST_SENT,
- &uac->local_cancel,
- 0, 0, TMCB_LOCAL_F);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT,
+ &uac->local_cancel,
+ 0, 0, TMCB_LOCAL_F);
}
/* retrs. should be already started so do nothing */
}else if (atomic_cmpxchg_long((void*)&uac->local_cancel.buffer, 0,
diff --git a/modules/tm/timer.c b/modules/tm/timer.c
index 0280ba3..22356c8 100644
--- a/modules/tm/timer.c
+++ b/modules/tm/timer.c
@@ -393,8 +393,8 @@ inline static ticks_t retransmission_handler( struct retr_buf *r_buf
)
return (ticks_t)-1;
}
if (unlikely(has_tran_tmcbs(r_buf->my_T, TMCB_REQUEST_SENT)))
- run_onsend_callbacks(TMCB_REQUEST_SENT, r_buf,
- 0, 0, TMCB_RETR_F);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT, r_buf,
+ 0, 0, TMCB_RETR_F);
} else {
#ifdef EXTRA_DEBUG
DBG("DEBUG: retransmission_handler : "
diff --git a/modules/tm/uac.c b/modules/tm/uac.c
index 857c82f..525ca0d 100644
--- a/modules/tm/uac.c
+++ b/modules/tm/uac.c
@@ -497,8 +497,8 @@ static inline void send_prepared_request_impl(struct retr_buf
*request, int retr
}
else if (unlikely(has_tran_tmcbs(request->my_T, TMCB_REQUEST_SENT)))
/* we don't know the method here */
- run_onsend_callbacks(TMCB_REQUEST_SENT, request, 0, 0,
- TMCB_LOCAL_F);
+ run_trans_callbacks_with_buf(TMCB_REQUEST_SENT, request, 0, 0,
+ TMCB_LOCAL_F);
if (retransmit && (start_retr(request)!=0))
LOG(L_CRIT, "BUG: t_uac: failed to start retr. for %p\n", request);
@@ -662,7 +662,7 @@ int ack_local_uac(struct cell *trans, str *hdrs, str *body)
&local_ack->dst,
local_ack->buffer, local_ack->buffer_len,
TMCB_LOCAL_F, 0 /* branch */, TYPE_LOCAL_ACK);
- run_onsend_callbacks2(TMCB_REQUEST_SENT, trans, &onsend_params);
+ run_trans_callbacks_off_params(TMCB_REQUEST_SENT, trans, &onsend_params);
}
ret = 0;