diff -u -r kamailio-3.1.1/Makefile kamailio-3.1.1-rls/Makefile
--- kamailio-3.1.1/Makefile 2010-12-02 22:37:42.000000000 +0100
+++ kamailio-3.1.1-rls/Makefile 2011-01-05 11:44:44.000000000 +0100
@@ -249,7 +249,7 @@
module_group_kutils=utils
# K purple module
-module_group_kpurple=purple
+#module_group_kpurple=purple
# K memcached module
module_group_kmemcached=memcached
diff -u -r kamailio-3.1.1/modules/xhttp/doc/xhttp_admin.xml kamailio-3.1.1-rls/modules/xhttp/doc/xhttp_admin.xml
--- kamailio-3.1.1/modules/xhttp/doc/xhttp_admin.xml 2010-12-02 22:35:29.000000000 +0100
+++ kamailio-3.1.1-rls/modules/xhttp/doc/xhttp_admin.xml 2011-01-05 11:44:52.000000000 +0100
@@ -161,6 +161,27 @@
+
+
+ Exported pseudo-variables
+
+
+ $hu: request URI of the HTTP
+ request (everything after http(s)://host:port)
+
+
+
+ $hu PV
+
+...
+event_route[xhttp:request] {
+ xdbg("incoming HTTP(s) request for $hu\n");
+...
+
+
+
+
+
diff -u -r kamailio-3.1.1/modules_k/rls/doc/rls_admin.xml kamailio-3.1.1-rls/modules_k/rls/doc/rls_admin.xml
--- kamailio-3.1.1/modules_k/rls/doc/rls_admin.xml 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/rls/doc/rls_admin.xml 2011-01-05 11:44:48.000000000 +0100
@@ -343,6 +343,42 @@
+
+ presence_server (str)
+
+ The address of the presence server. It will be used as outbound proxy for
+ Subscribe requests sent by the RLS server to bouncing on and off the
+ proxy and having to include special processing for this messages
+ in the proxy's configuration file.
+
+
+ Set presence_server parameter
+
+...
+modparam("rls", "presence_server", "sip:example.com:5060")
+...
+
+
+
+
+
+
+ server_address (str)
+
+ The address of the server that will be used as a contact in sent
+ Subscribe requests and 200 OK replies for Subscribe messages for RLS.
+ It is compulsory.
+
+
+ Set server_address parameter
+
+...
+modparam("rls", "server_address", "sip:rls@ip.address.ofyour.proxy:5060")
+...
+
+
+
+
Exported Functions
diff -u -r kamailio-3.1.1/modules_k/rls/notify.c kamailio-3.1.1-rls/modules_k/rls/notify.c
--- kamailio-3.1.1/modules_k/rls/notify.c 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/rls/notify.c 2011-01-05 11:44:48.000000000 +0100
@@ -595,7 +595,7 @@
"Subscription-State: active;expires=%d\r\n", expires);
else
str_hdr->len+= sprintf(str_hdr->s+str_hdr->len,
- "Subscription-State: terminated;reason=timeout");
+ "Subscription-State: terminated;reason=timeout\r\n");
str_hdr->len+= sprintf(str_hdr->s+str_hdr->len, "Require: eventlist\r\n");
diff -u -r kamailio-3.1.1/modules_k/rls/rls.c kamailio-3.1.1-rls/modules_k/rls/rls.c
--- kamailio-3.1.1/modules_k/rls/rls.c 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/rls/rls.c 2011-01-05 11:44:48.000000000 +0100
@@ -66,6 +66,7 @@
/** modules variables */
str server_address= {0, 0};
+str presence_server= {0, 0};
int waitn_time= 10;
str rlsubs_table= str_init("rls_watchers");
str rlpres_table= str_init("rls_presentity");
@@ -170,6 +171,7 @@
static param_export_t params[]={
{ "server_address", STR_PARAM, &server_address.s },
+ { "presence_server", STR_PARAM, &presence_server.s },
{ "db_url", STR_PARAM, &db_url.s },
{ "rlsubs_table", STR_PARAM, &rlsubs_table.s },
{ "rlpres_table", STR_PARAM, &rlpres_table.s },
@@ -222,10 +224,14 @@
if(!server_address.s)
{
LM_DBG("server_address parameter not set in configuration file\n");
- }
+ return -1;
+ }
else
server_address.len= strlen(server_address.s);
-
+
+ if(presence_server.s)
+ presence_server.len= strlen(presence_server.s);
+
if(!rls_integrated_xcap_server && xcap_root== NULL)
{
LM_ERR("xcap_root parameter not set\n");
diff -u -r kamailio-3.1.1/modules_k/rls/rls.h kamailio-3.1.1-rls/modules_k/rls/rls.h
--- kamailio-3.1.1/modules_k/rls/rls.h 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/rls/rls.h 2011-01-05 11:44:48.000000000 +0100
@@ -83,6 +83,7 @@
extern char* xcap_root;
extern unsigned int xcap_port;
extern str server_address;
+extern str presence_server;
extern int waitn_time;
extern str rlsubs_table;
extern str rlpres_table;
diff -u -r kamailio-3.1.1/modules_k/rls/subscribe.c kamailio-3.1.1-rls/modules_k/rls/subscribe.c
--- kamailio-3.1.1/modules_k/rls/subscribe.c 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/rls/subscribe.c 2011-01-05 11:44:48.000000000 +0100
@@ -232,12 +232,12 @@
}
-int reply_200(struct sip_msg* msg, str* contact, int expires)
+int reply_200(struct sip_msg* msg, str* local_contact, int expires)
{
str hdr_append;
int len;
- hdr_append.s = (char *)pkg_malloc( sizeof(char)*(contact->len+ 70));
+ hdr_append.s = (char *)pkg_malloc( sizeof(char)*(local_contact->len+ 70));
if(hdr_append.s == NULL)
{
LM_ERR("no more pkg memory\n");
@@ -251,8 +251,8 @@
}
strncpy(hdr_append.s+hdr_append.len ,"Contact: <", 10);
hdr_append.len += 10;
- strncpy(hdr_append.s+hdr_append.len, contact->s, contact->len);
- hdr_append.len+= contact->len;
+ strncpy(hdr_append.s+hdr_append.len, local_contact->s, local_contact->len);
+ hdr_append.len+= local_contact->len;
strncpy(hdr_append.s+hdr_append.len, ">", 1);
hdr_append.len += 1;
strncpy(hdr_append.s+hdr_append.len, CRLF, CRLF_LEN);
@@ -598,7 +598,7 @@
}
/*** if correct reply with 200 OK*/
- if(reply_200(msg, &subs.contact, subs.expires)< 0)
+ if(reply_200(msg, &subs.local_contact, subs.expires)< 0)
goto error;
/* call sending Notify with full state */
@@ -669,7 +669,6 @@
}
s->expires= subs->expires+ (int)time(NULL);
- s->remote_cseq= subs->remote_cseq;
if(s->db_flag & NO_UPDATEDB_FLAG)
s->db_flag= UPDATEDB_FLAG;
@@ -680,6 +679,7 @@
LM_DBG("stored cseq= %d\n", s->remote_cseq);
return Stale_cseq_code;
}
+ s->remote_cseq= subs->remote_cseq;
subs->pres_uri.s= (char*)pkg_malloc(s->pres_uri.len* sizeof(char));
if(subs->pres_uri.s== NULL)
@@ -771,7 +771,10 @@
}
s.id= did_str;
s.watcher_uri= &wuri;
- s.contact= &subs->local_contact;
+ s.contact= &server_address;
+ if(presence_server.s)
+ s.outbound_proxy= &presence_server;
+
s.event= get_event_flag(&subs->event->name);
if(s.event< 0)
{
@@ -782,7 +785,7 @@
s.source_flag= RLS_SUBSCRIBE;
extra_headers.s= buf;
extra_headers.len= sprintf(extra_headers.s,
- "Max-Forwards: 70\r\nSupport: eventlist\r\n");
+ "Supported: eventlist\r\n");
s.extra_headers= &extra_headers;
if(process_list_and_exec(rl_node, send_resource_subs,(void*)(&s))< 0)
diff -u -r kamailio-3.1.1/modules_k/xcap_server/xcap_misc.c kamailio-3.1.1-rls/modules_k/xcap_server/xcap_misc.c
--- kamailio-3.1.1/modules_k/xcap_server/xcap_misc.c 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/xcap_server/xcap_misc.c 2011-01-05 11:44:47.000000000 +0100
@@ -683,7 +683,7 @@
pxs->key.len, pxs->key.s);
if(pxs->key.len==4 && strncmp(pxs->key.s, "data", 4)==0) {
pxs->ktype = 0;
- } else if(pxs->key.len==3 && strncmp(pxs->key.s, "uri", 4)==0) {
+ } else if(pxs->key.len==3 && strncmp(pxs->key.s, "uri", 3)==0) {
pxs->ktype = 1;
} else if(pxs->key.len==4 && strncmp(pxs->key.s, "root", 4)==0) {
pxs->ktype = 2;
diff -u -r kamailio-3.1.1/modules_k/xcap_server/xcap_server.c kamailio-3.1.1-rls/modules_k/xcap_server/xcap_server.c
--- kamailio-3.1.1/modules_k/xcap_server/xcap_server.c 2010-12-02 22:35:30.000000000 +0100
+++ kamailio-3.1.1-rls/modules_k/xcap_server/xcap_server.c 2011-01-05 11:44:47.000000000 +0100
@@ -49,7 +49,7 @@
MODULE_VERSION
-#define XCAP_TABLE_VERSION 3
+#define XCAP_TABLE_VERSION 4
static int xcaps_put_db(str* user, str *domain, xcap_uri_t *xuri, str *etag,
diff -u -r kamailio-3.1.1/pkg/kamailio/deb/lenny/rules kamailio-3.1.1-rls/pkg/kamailio/deb/lenny/rules
--- kamailio-3.1.1/pkg/kamailio/deb/lenny/rules 2010-12-02 22:37:42.000000000 +0100
+++ kamailio-3.1.1-rls/pkg/kamailio/deb/lenny/rules 2011-01-05 11:44:43.000000000 +0100
@@ -25,7 +25,7 @@
# extra modules to skip, because they are not compilable now
# - regardless if they go to the main kamailio package or to some module package,
# they will be excluded from compile and install of all
-EXTRA_EXCLUDED_MODULES=bdb dbtext oracle pa rls iptrtpproxy
+EXTRA_EXCLUDED_MODULES=bdb dbtext oracle pa iptrtpproxy
#EXTRA_EXCLUDED_MODULES=
# possible module directories that can appear in MODULES_SP