osip_uri_uparam_add(ct->url,osip_strdup("line"),line);\r
}\r
\r
-static void sal_register_add_route(osip_message_t *msg, const char *proxy){\r
+void sal_message_add_route(osip_message_t *msg, const char *proxy){\r
osip_route_t *route;\r
\r
osip_list_special_free(&msg->routes,(void (*)(void*))osip_route_free);\r
h->rid=eXosip_register_build_initial_register(from,domain,NULL,expires,&msg);\r
if (msg){\r
if (contact) register_set_contact(msg,contact);\r
- sal_register_add_route(msg,proxy);\r
+ sal_message_add_route(msg,proxy);\r
sal_add_register(h->base.root,h);\r
}else{\r
ms_error("Could not build initial register.");\r
}else{\r
eXosip_lock();\r
eXosip_register_build_register(h->rid,expires,&msg);\r
- sal_register_add_route(msg,proxy);\r
+ sal_message_add_route(msg,proxy);\r
}\r
if (msg){\r
eXosip_register_send_register(h->rid,msg);\r
eXosip_register_build_register(op->rid,expires,&msg);\r
if (msg!=NULL){\r
if (contact) register_set_contact(msg,contact);\r
- sal_register_add_route(msg,sal_op_get_route(op));\r
+ sal_message_add_route(msg,sal_op_get_route(op));\r
eXosip_register_send_register(op->rid,msg);\r
}else ms_error("Could not build REGISTER refresh message.");\r
eXosip_unlock();\r
osip_message_t *pub;
int i;
char buf[1024];
+ const char *route=sal_op_get_route(op);
mk_presence_body (presence_mode, from, buf, sizeof (buf), presence_style);
- i = eXosip_build_publish(&pub,from, to, sal_op_get_route(op), "presence", "300",
+ i = eXosip_build_publish(&pub,to, from, NULL, "presence", "600",
presence_style ? "application/xpidf+xml" : "application/pidf+xml", buf);
if (i<0){
ms_warning("Failed to build publish request.");
return -1;
}
-
+ if (route)
+ sal_message_add_route(pub,route);
+
eXosip_lock();
i = eXosip_publish(pub, to); /* should update the sip-if-match parameter
from sip-etag from last 200ok of PUBLISH */
eXosip_unlock();
if (i<0){
- ms_message("Failed to send publish request.");
- return -1;
+ ms_message("Failed to send publish request.");
+ return -1;
}
sal_add_other(sal_op_get_sal(op),op,pub);
return 0;