Module: sip-router
Branch: master
Commit: d6d71b0e217226fe43491a0e9ba75ec0a6649cd5
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=d6d71b0e217226fe43491a0e9ba75ec0a6649cd5

Author: Andrew Mortensen <[email protected]>
Committer: Andrew Mortensen <[email protected]>
Date:   Sun Mar  3 16:59:23 2013 -0500

sca: make sca_reply a generic reply function.

- take a pre-filled extra_headers parameter instead, add with add_lump_rpl.

---

 modules/sca/sca_reply.c |   55 ++++++-----------------------------------------
 modules/sca/sca_reply.h |    5 +--
 2 files changed, 9 insertions(+), 51 deletions(-)

diff --git a/modules/sca/sca_reply.c b/modules/sca/sca_reply.c
index 8da3a6e..3e2f910 100644
--- a/modules/sca/sca_reply.c
+++ b/modules/sca/sca_reply.c
@@ -31,63 +31,22 @@
 
     int
 sca_reply( sca_mod *scam, int status_code, char *status_msg,
-       int event_type, int expires, sip_msg_t *msg )
+       str *extra_headers, sip_msg_t *msg )
 {
     str                status_str = STR_NULL;
-    str                extra_headers = STR_NULL;
-    char       hdr_buf[ 1024 ];
-    int                len;
 
     assert( scam != NULL && scam->sl_api != NULL );
     assert( msg != NULL );
 
-    if ( event_type != SCA_EVENT_TYPE_CALL_INFO &&
-               event_type != SCA_EVENT_TYPE_LINE_SEIZE ) {
-       LM_ERR( "Unrecognized event type %d", event_type );
-       return( -1 );
-    }
-
     status_str.s = status_msg;
     status_str.len = strlen( status_msg );
 
-    if ( status_code < 300 ) {
-       /* Add Event, Contact, Allow-Events and Expires headers */
-       extra_headers.s = hdr_buf;
-       len = snprintf( extra_headers.s, sizeof( hdr_buf ),
-               "Event: %s%s", sca_event_name_from_type( event_type ), CRLF );
-       extra_headers.len = len;
-
-       SCA_STR_APPEND_CSTR( &extra_headers, "Contact: " );
-       SCA_STR_APPEND( &extra_headers, &REQ_LINE( msg ).uri );
-       SCA_STR_APPEND_CSTR( &extra_headers, CRLF );
-
-       SCA_STR_COPY_CSTR( &extra_headers,
-               "Allow-Events: call-info, line-seize" CRLF );
-
-       SCA_STR_COPY_CSTR( &extra_headers, "Expires: " );
-
-       len = snprintf( extra_headers.s + extra_headers.len,
-                 sizeof( hdr_buf ) - extra_headers.len,
-                 "%d%s", expires, CRLF );
-       extra_headers.len += len;
-
-       if ( add_lump_rpl( msg, extra_headers.s, extra_headers.len,
-                          LUMP_RPL_HDR ) == NULL ) {
-           LM_ERR( "Failed to add Allow-Events and Expires headers" );
-           return( -1 );
-       }
-    } else if ( status_code == 480 ) {
-       /* tell loser of line-seize SUBSCRIBE race to try again shortly */ 
-       extra_headers.s = hdr_buf;
-       len = snprintf( extra_headers.s, sizeof( hdr_buf ),
-                       "Retry-After: %d%s", 1, CRLF );
-       extra_headers.len = len;
-
-       if ( add_lump_rpl( msg, extra_headers.s, extra_headers.len,
-                           LUMP_RPL_HDR ) == NULL ) {
-           LM_ERR( "sca_reply: failed to add Retry-After header" );
-           return( -1 );
-       }
+    if ( extra_headers && extra_headers->len ) {
+        if ( add_lump_rpl( msg, extra_headers->s, extra_headers->len,
+                        LUMP_RPL_HDR ) == NULL ) {
+            LM_ERR("sca_subscription_reply: failed to add Retry-After header");
+            return( -1 );
+        }
     }
 
     if ( scam->sl_api->freply( msg, status_code, &status_str ) < 0 ) {
diff --git a/modules/sca/sca_reply.h b/modules/sca/sca_reply.h
index a8b1131..e2c5d1a 100644
--- a/modules/sca/sca_reply.h
+++ b/modules/sca/sca_reply.h
@@ -28,9 +28,8 @@
 #include "sca.h"
 
 #define SCA_REPLY_ERROR( mod, scode, smsg, sreply ) \
-       sca_reply((mod), (scode), (smsg), SCA_EVENT_TYPE_CALL_INFO, -1, \
-               (sreply))
+       sca_reply((mod), (scode), (smsg), NULL, (sreply))
 
-int    sca_reply( sca_mod *, int, char *, int, int, sip_msg_t * );
+int    sca_reply( sca_mod *, int, char *, str *, sip_msg_t * );
 
 #endif /* SCA_REPLY_H */


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to