Explorar o código

presence_xml: basic framework for handling xcap-diff event

= can be diabled via modparam disable_xcapdiff
Daniel-Constantin Mierla %!s(int64=12) %!d(string=hai) anos
pai
achega
0c15125767
Modificáronse 2 ficheiros con 22 adicións e 0 borrados
  1. 20 0
      modules/presence_xml/add_events.c
  2. 2 0
      modules/presence_xml/presence_xml.c

+ 20 - 0
modules/presence_xml/add_events.c

@@ -44,6 +44,7 @@
 extern int disable_presence;
 extern int disable_winfo;
 extern int disable_bla;
+extern int disable_xcapdiff;
 
 static str pu_415_rpl  = str_init("Unsupported media type");
 
@@ -119,6 +120,25 @@ int xml_add_events(void)
 		LM_DBG("added 'dialog;sla' event to presence module\n");
 	}
 	
+	if (!disable_xcapdiff) {
+		/* constructing xcap-diff event */
+		memset(&event, 0, sizeof(pres_ev_t));
+		event.name.s= "xcap-diff";
+		event.name.len= 9;
+
+		event.content_type.s= "application/xcap-diff+xml";
+		event.content_type.len= 25;
+
+		event.type= PUBL_TYPE;
+		event.default_expires= 3600;
+		if(pres_add_event(&event)< 0)
+		{
+			LM_ERR("while adding event xcap-diff\n");
+			return -1;
+		}
+		LM_DBG("added 'xcap-diff' event to presence module\n");
+	}
+
 	return 0;
 }
 /*

+ 2 - 0
modules/presence_xml/presence_xml.c

@@ -94,6 +94,7 @@ int disable_presence = 0;
 int disable_winfo    = 0;
 int disable_bla      = 1;
 int passive_mode     = 0;
+int disable_xcapdiff = 0;
 str xcapauth_userdel_reason = str_init("probation");
 
 /** SL API structure */
@@ -126,6 +127,7 @@ static param_export_t params[]={
 	{ "disable_presence",	INT_PARAM, &disable_presence },
 	{ "disable_winfo",		INT_PARAM, &disable_winfo },
 	{ "disable_bla",		INT_PARAM, &disable_bla },
+	{ "disable_xcapdiff",	INT_PARAM, &disable_xcapdiff },
 	{ "passive_mode",		INT_PARAM, &passive_mode },
 	{ "xcapauth_userdel_reason", STR_PARAM, &xcapauth_userdel_reason.s},
 	{ 0, 0, 0}