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

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date:   Wed Mar 17 20:32:40 2010 +0100

pua_mi: id parameter introduced in mi pua_publish

- the parameter is before etag
- required to refer to same call for dialog-info
- patch by Alex Hermann (SF#2826542)

---

 modules_k/pua_mi/README               |  122 +++++++++++++++++++-------------
 modules_k/pua_mi/doc/pua_mi_admin.xml |   13 ++++
 modules_k/pua_mi/mi_func.c            |   21 ++++++-
 3 files changed, 105 insertions(+), 51 deletions(-)

diff --git a/modules_k/pua_mi/README b/modules_k/pua_mi/README
index 487b3d0..ecbc6ca 100644
--- a/modules_k/pua_mi/README
+++ b/modules_k/pua_mi/README
@@ -14,27 +14,26 @@ Juha Heinanen
 
    Copyright � 2006 voice-system.ro
    Revision History
-   Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
-                              (Mi, 06 Aug 2008) $
-     __________________________________________________________
+   Revision $Revision$ $Date$
+     __________________________________________________________________
 
    Table of Contents
 
    1. Admin Guide
 
-        1.1. Overview
-        1.2. Dependencies
+        1. Overview
+        2. Dependencies
 
-              1.2.1. Kamailio Modules
-              1.2.2. External Libraries or Applications
+              2.1. Kamailio Modules
+              2.2. External Libraries or Applications
 
-        1.3. Exported Parameters
-        1.4. Exported Functions
-        1.5. Exported MI functions
+        3. Exported Parameters
+        4. Exported Functions
+        5. Exported MI functions
 
-              1.5.1. pua_publish
+              5.1. pua_publish
 
-        1.6. pua_subscribe
+        6. pua_subscribe
 
    List of Examples
 
@@ -42,44 +41,63 @@ Juha Heinanen
 
 Chapter 1. Admin Guide
 
-1.1. Overview
+   Table of Contents
+
+   1. Overview
+   2. Dependencies
+
+        2.1. Kamailio Modules
+        2.2. External Libraries or Applications
+
+   3. Exported Parameters
+   4. Exported Functions
+   5. Exported MI functions
+
+        5.1. pua_publish
+
+   6. pua_subscribe
 
-   The pua_mi offers the possibility to publish presence
-   information and subscribe to presence information via MI
-   transports.
+1. Overview
 
-   Using this module you can create independent
-   applications/scripts to publish not sip-related information
-   (e.g., system resources like CPU-usage, memory, number of
-   active subscribers ...). Also, this module allows non-SIP
-   speaking applications to subscribe presence information kept in
-   a SIP presence server.
+   The pua_mi offers the possibility to publish presence information and
+   subscribe to presence information via MI transports.
 
-1.2. Dependencies
+   Using this module you can create independent applications/scripts to
+   publish not sip-related information (e.g., system resources like
+   CPU-usage, memory, number of active subscribers ...). Also, this module
+   allows non-SIP speaking applications to subscribe presence information
+   kept in a SIP presence server.
 
-1.2.1. Kamailio Modules
+2. Dependencies
+
+   2.1. Kamailio Modules
+   2.2. External Libraries or Applications
+
+2.1. Kamailio Modules
 
    The following modules must be loaded before this module:
      * pua
 
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
 
-   The following libraries or applications must be installed
-   before running Kamailio with this module loaded:
+   The following libraries or applications must be installed before
+   running Kamailio with this module loaded:
      * none
 
-1.3. Exported Parameters
+3. Exported Parameters
 
      * none
 
-1.4. Exported Functions
+4. Exported Functions
+
+   The module does not export functions to be used in configuration
+   script.
 
-   The module does not export functions to be used in
-   configuration script.
+5. Exported MI functions
 
-1.5. Exported MI functions
+   5.1. pua_publish
 
-1.5.1.  pua_publish
+5.1.  pua_publish
 
    Command parameters:
      * presentity_uri - e.g. sip:[email protected]
@@ -88,13 +106,18 @@ Chapter 1. Admin Guide
        information (e.g. presence).
      * content type - Content type of published information (e.g.
        application/pidf+xml) or . if no information is enclosed.
-     * ETag - ETag that publish should match or . if no ETag is
-       given.
-     * extra_headers - Extra headers added to PUBLISH request or .
-       if no extra headers.
+     * id - id for a series of related PUBLISHes to the same
+       presentity-uri or . to always use the same series. For example
+       dialog-info must reuse the same id for the same call otherwise
+       status will be lost when multiple parallel calls to/from the same
+       user take place. The dialog-id from the dialog-info body qualifies
+       as a suitable id here.
+     * ETag - ETag that publish should match or . if no ETag is given.
+     * extra_headers - Extra headers added to PUBLISH request or . if no
+       extra headers.
      * body - The body of the publish request containing published
-       information or missing if no published information. It has
-       to be a single line for FIFO transport.
+       information or missing if no published information. It has to be a
+       single line for FIFO transport.
 
    Example 1.1. pua_publish FIFO example
 ...
@@ -106,20 +129,19 @@ presence
 application/pidf+xml
 .
 .
-<?xml version='1.0'?><presence xmlns='urn:ietf:params:xml:ns:pidf' xmlns
-:dm='urn:ietf:params:xml:ns:pidf:data-model' xmlns:rpid='urn:ietf:params
-:xml:ns:pidf:rpid' xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' entity='s
[email protected]'><tuple id='0x81475a0'><status><basic>open</basic></s
-tatus></tuple><dm:person id='pdd748945'><rpid:activities><rpid:away/>awa
-y</rpid:activities><dm:note>CPU:16 MEM:476</dm:note></dm:person></presen
-ce>
-
+.
+<?xml version='1.0'?><presence xmlns='urn:ietf:params:xml:ns:pidf' 
xmlns:dm='urn
+:ietf:params:xml:ns:pidf:data-model' 
xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpi
+d' xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' 
entity='[email protected]'><tup
+le id='0x81475a0'><status><basic>open</basic></status></tuple><dm:person 
id='pdd
+748945'><rpid:activities><rpid:away/>away</rpid:activities><dm:note>CPU:16 
MEM:4
+76</dm:note></dm:person></presence>
 
-1.6.  pua_subscribe
+6.  pua_subscribe
 
    Command parameters:
      * presentity_uri - e.g. sip:[email protected]
      * watcher_uri - e.g. sip:[email protected]
      * event package
-     * expires - Relative time in seconds for the desired validity
-       of the subscription.
+     * expires - Relative time in seconds for the desired validity of the
+       subscription.
diff --git a/modules_k/pua_mi/doc/pua_mi_admin.xml 
b/modules_k/pua_mi/doc/pua_mi_admin.xml
index 8602c49..5f332b8 100644
--- a/modules_k/pua_mi/doc/pua_mi_admin.xml
+++ b/modules_k/pua_mi/doc/pua_mi_admin.xml
@@ -120,6 +120,18 @@
                        </listitem>
                        <listitem>
                                <para>
+                                       <emphasis>id</emphasis>
+                                       - id for a series of related PUBLISHes 
to the same 
+               presentity-uri or . to always use the same series.
+               For example dialog-info must reuse the same id for the
+               same call otherwise status will be lost when multiple
+               parallel calls to/from the same user take place. The
+               dialog-id from the dialog-info body qualifies as a suitable
+               id here.
+                               </para> 
+                       </listitem>
+                       <listitem>
+                               <para>
                                        <emphasis>ETag</emphasis>
                                        - ETag that publish should
                match or . if no ETag is given.
@@ -154,6 +166,7 @@ presence
 application/pidf+xml
 .
 .
+.
 <?xml version='1.0'?><presence xmlns='urn:ietf:params:xml:ns:pidf' 
xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model' 
xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid' 
xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' entity='[email protected]'><tuple 
id='0x81475a0'><status><basic>open</basic></status></tuple><dm:person 
id='pdd748945'><rpid:activities><rpid:away/>away</rpid:activities><dm:note>CPU:16
 MEM:476</dm:note></dm:person></presence>
 ]]>
 </programlisting>
diff --git a/modules_k/pua_mi/mi_func.c b/modules_k/pua_mi/mi_func.c
index b8089aa..fe3fa3a 100644
--- a/modules_k/pua_mi/mi_func.c
+++ b/modules_k/pua_mi/mi_func.c
@@ -58,6 +58,7 @@ struct mi_root* mi_pua_publish(struct mi_root* cmd, void* 
param)
        publ_info_t publ;
        str event;
        str content_type;
+       str id;
        str etag;
        str extra_headers;
        int result;
@@ -142,6 +143,19 @@ struct mi_root* mi_pua_publish(struct mi_root* cmd, void* 
param)
        if(node == NULL)
                return 0;
 
+       /* Get id */
+       id= node->value;
+       if(id.s== NULL || id.len== 0)
+       {
+               LM_ERR("empty id parameter\n");
+               return init_mi_tree(400, "Empty id parameter", 20);
+       }
+       LM_DBG("id '%.*s'\n", id.len, id.s);
+
+       node = node->next;
+       if(node == NULL)
+               return 0;
+
        /* Get etag */
        etag= node->value;
        if(etag.s== NULL || etag.len== 0)
@@ -213,7 +227,12 @@ struct mi_root* mi_pua_publish(struct mi_root* cmd, void* 
param)
        {
                publ.content_type= content_type;
        }       
-       
+
+       if(! (id.len== 1 && id.s[0]== '.'))
+       {
+               publ.id= id;
+       }
+
        if(! (etag.len== 1 && etag.s[0]== '.'))
        {
                publ.etag= &etag;


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

Reply via email to