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
