Menu

presence watcher and xcap-diff issue

Clement
2010-04-09
2013-05-09
  • Clement

    Clement - 2010-04-09

    I've set up both an openxcap server and opensips 1.6 server to manage presence. I use the mercuro client to manage my contact list and store it in the xcap server. I would like to use the watcher mechanism in order to allow or disallow a peer to view my presence.

    The scenario says that Alice which is SUBSCRIBEd to presence.winfo is NOTIFYed  by the presence server that Bob is whilling to know her presence informations (NOTIFY presence.winfo status=pending). Assuming that she agree, Alice update the xcap server. According to the schem from openxcap' website (http://openxcap.org/), once the cap document has been updated, a "refreshWatchers" message is sent to the presence server (opensips) in order to warn him that the status has changed. The presence server then NOTIFY bob, and Alice that the event=approved and status=active.

    But I never get the last NOTIFY message from opensips. When I get the "refreshWatchers" (in fact a HTTP POST RPC2 message with XML inside), opensips send to himself a PUBLISH message (event : xcap-diff), but the reply is SIP PUBLISH Satus : Bad Event 389 (with allox-event: xcap-diff, dialog;sla, presence… ). And no NOTIFY message is sent ever to Alice nor Bob…

    I've read on the presence_xcapdiff module's cookbook that it's just an empty module and only register the xcap-diff event to be processed. Is this an issue that make opensips unable to deal with presence.winfo and xcap ?

    The trace says :
    DBG:core:receive_msg: preparing to run routing scripts…
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=100
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: end of header reached, state=9
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: display={}, ruri={sip:cje@open-ims.test}
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: <To> ; uri= 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: to body 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: cseq <CSeq>: <10> <PUBLISH>
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: content_length=439
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:maxfwd:is_maxfwd_present: value = 70 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to_param: tag=667f06d2bc7c6244ec13ff513b262a53-f3ca
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: end of header reached, state=29
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: display={}, ruri={sip:cje@open-ims.test}
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:grep_sock_info: checking if host==us: 13==14 &&   == 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:grep_sock_info: checking if port 5060 matches port 5060
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:grep_sock_info: checking if host==us: 13==14 &&   == 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:grep_sock_info: checking if port 5060 matches port 5060
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: PUBLISH : sip:cje@open-ims.test
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_newtran: transaction on entrance=0xffffffff
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=ffffffffffffffff
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: found end of header
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=78
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_lookup_request: start searching: hash=40213, isACK=0
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:matching_3261: RFC3261 transaction matching failed
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_lookup_request: no transaction found
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=ffffffffffffffff
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: ERROR:presence:handle_publish: Missing or unsupported event header field value
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: ERROR:presence:handle_publish: ^Ievent=
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=ffffffffffffffff
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:check_ip_address: params 192.168.150.14, 192.168.150.14, 0
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:_shm_resize: resize(0) called
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:cleanup_uac_timers: RETR/FR timers reset
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:insert_timer_unsafe: : 0xb5a5850c (57)
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:_reply_light: reply sent out. buf=0x81ca7c4: SIP/2.0 4…, shmem=0xb5a56d2c: SIP/2.0 4
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:_reply_light: finished
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_msg: SIP Reply  (status):
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_msg:  version: <SIP/2.0>
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_msg:  status:  <489>
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_msg:  reason:  <Bad Event>
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=2
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_via_param: found param type 232, <branch> = <z9hG4bK51d9.baebf023.0>; state=16
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_via: end of header reached, state=5
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: via found, flags=2
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: this is the first via
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:receive_msg: After parse_msg…
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:forward_reply: found module tm, passing reply to it
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_check: start=0xffffffff
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_headers: flags=22
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to_param: tag=73ec73bb2e32b32f62bb71aca97f128b-9c04
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: end of header reached, state=29
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:parse_to: display={}, ruri={sip:cje@open-ims.test}
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: <To> ; uri= 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: to body 
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:get_hdr_field: cseq <CSeq>: <10> <PUBLISH>
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_reply_matching: hash 40213 label 839892651 branch 0
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:tm:t_unref: UNREF_UNSAFE: after is 0
    Apr  9 17:38:52 AS /usr/local/sbin/opensips: DBG:core:destroy_avp_list: destroying list (nil)

     
  • Anca Vamanu

    Anca Vamanu - 2010-04-12

    Hi Clement,

    xcap diff has nothing to do with refreshWatchers command issued when a presence authorization changes. This should work without the xcapdiff modules. Please print the part of the log file when refreshWatchers command is processed.

    Regards,
    Anca

     
  • Clement

    Clement - 2010-04-13

    Hi Anca, thanks for your answer. May be there is something I missed, but presence_xcapdiff module is loaded in the sample configuration file given by openxcap (http://openxcap.org/wiki/Installation) and expected to work "out of the box" with opensips.
    Here is exactly what opensips says when my Mercuro client does a xcap modification and then a RPC message is sent to opensips :

    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: PUBLISH : sip:alt@open-ims.test
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: ERROR:presence:handle_publish: Missing or unsupported event header field value 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: ERROR:presence:handle_publish: ^Ievent=[xcap-diff] 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: SUBSCRIBE : sip:cje@open-ims.test
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: ERROR:presence_xml:get_rule_node: didn't find identity tag 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: INFO:presence:send_notify_request: NOTIFY sip:cje@open-ims.test via sip:mt@scscf.open-ims.test:6060;lr on behalf of sip:cje@open-ims.test for event presence.winfo 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11442]: INFO:presence:send_notify_request: NOTIFY sip:alt@open-ims.test via sip:mt@scscf.open-ims.test:6060;lr on behalf of sip:cje@open-ims.test for event presence 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11443]: PUBLISH : sip:alt@open-ims.test
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11443]: ERROR:presence:handle_publish: Missing or unsupported event header field value 
    Apr 13 15:19:17 AS /usr/local/sbin/opensips[11443]: ERROR:presence:handle_publish: ^Ievent=[xcap-diff] 
    Apr 13 15:19:18 AS /usr/local/sbin/opensips[11443]: PUBLISH : sip:alt@open-ims.test
    

    The answer (HTTP 200 OK) contains that :

    <?xml version="1.0" encoding="UTF-8"?>
    <methodResponse>
    <params>
    <param><value><string>489 Bad Event
    </string></value></param>
    </params>
    </methodResponse>
    

    I 've tested with a commented presence_xcapdiff in my opensips.cfg file and restarted the opensips server. I then authorized once again a peer to view my presence in mercuro : the HTTP POST RPC2 is sent by openxcap to opensips but the response I get in the HTTP 200 OK is now :

    <?xml version="1.0" encoding="UTF-8"?>
    <methodResponse>
    <fault>
    <value><struct>
    <member><name>faultCode</name>
    <value><i4>500</i4></value></member>
    <member><name>faultString</name>
    <value><string>MI/PUBLISH failed</string></value></member>
    </struct></value>
    </fault>
    </methodResponse>
    

    OpenXcap server says :

    Starting factory <twisted.web.xmlrpc._QueryFactory instance at 0x8daedcc>
    192.168.3.87 'PUT /xcap-root/resource-lists/users/sip:cje@open-ims.test/index/~~/resource-lists/list%5B@name=%22rcs%22%5D/entry%5B@uri=%22sip%3Aalt%40open-ims.test%22%5D HTTP/1.1' 201 0 - 'XDM-client/OMA1.1' "20810156ae77aa039d4dee700f175b33"
    error: Unhandled error in Deferred:
    Fault: <Fault 500: 'MI/PUBLISH failed'>
    Stopping factory <twisted.web.xmlrpc._QueryFactory instance at 0x8daedcc>
    Starting factory <twisted.web.xmlrpc._QueryFactory instance at 0x8dbd70c>
    192.168.3.87 'PUT /xcap-root/resource-lists/users/sip:cje@open-ims.test/properties-resource-list.xml/~~/resource-lists/list%5B@name=%22rcs%22%5D/entry%5B@uri=%22sip%3Aalt%40open-ims.test%22%5D HTTP/1.1' 201 0 - 'XDM-client/OMA1.1' "34d44f5c4c8a29db9c2fe324d4cddd5a"
    error: Unhandled error in Deferred:
    Fault: <Fault 500: 'MI/PUBLISH failed'>
    Stopping factory <twisted.web.xmlrpc._QueryFactory instance at 0x8dbd70c>
    

    I confess that It's seems weird to me. I just want to implement a presence Presence server with xcap and watcher information an authorization. I didn't expect this to be so unease…

     
  • Clement

    Clement - 2010-04-15

    Hi, I think I hunderstand how does it suposed to work now.
    Actualy you were right : xcap-diff has nothing to do with my needs. I've tryed a lot of things and finaly I get the refreshWatchers message issued from openxcap to opensips. But I get only this message once when the user is not in the xcap table. If it's, the message is not sent anymore after despite it should be for exemple if there is a change in the xcap document.

    I'm wondering if the reply to the first message is correct.
    Here is the content of the XMLRPC command :

    <?xml version="1.0"?>
    <methodCall>
    <methodName>refreshWatchers</methodName>
    <params>
    <param>
    <value><string>sip:alt@open-ims.test</string></value>
    </param>
    <param>
    <value><string>presence</string></value>
    </param>
    <param>
    <value><int>0</int></value>
    </param>
    </params>
    </methodCall>
    

    And this is the answer :

    <?xml version="1.0" encoding="UTF-8"?>
    <methodResponse>
    <params>
    <param><value><string></string></value></param>
    </params>
    </methodResponse>
    

    Is the answer supposed to be empty like this ?

    Here it is what happen when the client connect for the first time (there is no document on him in xcap table). 192.168.150.15 is OpenXCap and 192.168.150.14 is OpenSips, 127.0.0.1 is database connection located on Opensips.

    |Time     | 192.168.150.15                        | 192.168.150.14    | 127.0.0.1         |
    |0,000    |         POST /RPC2 HTTP/1.0           |                   |HTTP: POST /RPC2 HTTP/1.0 
    |         |(51466)  ------------------>  (8080)   |                   |
    |0,006    |                                       |                   |         Request QueryMySQL: Request Query
    |         |                                       |                   |(33535)  ------------------>(3306)
    |0,007    |                                       |                   |         Response  |MySQL: Response
    |         |                                       |                   |(3306)   ------------------>(33535)
    |0,010    |                                       |                   |         Request QueryMySQL: Request Query
    |         |                                       |                   |(33535)  ------------------>(3306)
    |0,011    |                                       |                   |         Response  |MySQL: Response
    |         |                                       |                   |(3306)   ------------------>(33535)
    |0,018    |         HTTP/1.1 200 OK               |                   |HTTP: HTTP/1.1 200 OK
    |         |(51466)  <------------------  (8080)   |                   |
    

    Mysql Request Querries are :
    1- select doc from xcap where username='alice' AND domain='open-ims.test' AND doc_type=2
    2- select status,reason,watcher_username,watcher_domain from watchers where presentity_uri='sip:alice@open-ims.test' AND event='presence'

    This is the log on OpenSips when the "http xmlrpc refreshWatchers" is receieved :

    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:mi_xmlrpc:default_method: starting up.....
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:mi_xmlrpc:default_method: done looking the mi command.
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:mi_xmlrpc:default_method: done parsing the mi tree.
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence:mi_refreshWatchers: start
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence:mi_refreshWatchers: event 'presence'
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence:search_event: start event= [presence]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence_xml:get_rules_doc: [user]= alice^I[domain]= open-ims.test
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_new_result: allocate 28 bytes for result set at 0x81c9d18
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: 1 columns returned from the query
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_allocate_columns: allocate 16 bytes for result columns at 0x81c9d44
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: RES_NAMES(0x81c9d48)[0]=[doc]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: use DB_BLOB result type
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_allocate_rows: allocate 28 bytes for result rows and values at 0x81c9d60
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_str2val: converting BLOB [<?xml version="1.0" encoding="utf-8"?>^M <cr:ruleset xmlns:op="urn:oma:xml:prs:pres-rules" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns="urn:ietf:params:xml:ns:pres-rules" xmlns:cr="urn:ietf:params:xml:ns:common-policy">^M   <cr:rule id="wp_prs_allow_own">^M     <cr:conditions>^M       <cr:identity>^M         <cr:one id="sip:alice@open-ims.test" />^M       </cr:identity>^M     </cr:conditions>^M     <cr:actions>^M       <sub-handling>allow</sub-handling>^M     </cr:actions>^M     <cr:transformations>^M       <provide-services>^M         <all-services />^M       </provide-services>^M       <provide-persons>^M         <all-persons />^M       </provide-persons>^M       <provide-all-attributes />^M       <provide-devices>^M         <all-devices />^M       </provide-devices>^M     </cr:transformations>^M   </cr:rule>^M   <cr:rule id="rcs_allow_services_anonymous">^M     <cr:conditions>^M       <ocp:anonymous-requ
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence_xml:get_rules_doc: xcap document: <?xml version="1.0" encoding="utf-8"?>^M <cr:ruleset xmlns:op="urn:oma:xml:prs:pres-rules" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns="urn:ietf:params:xml:ns:pres-rules" xmlns:cr="urn:ietf:params:xml:ns:common-policy">^M   <cr:rule id="wp_prs_allow_own">^M     <cr:conditions>^M       <cr:identity>^M         <cr:one id="sip:alice@open-ims.test" />^M       </cr:identity>^M     </cr:conditions>^M     <cr:actions>^M       <sub-handling>allow</sub-handling>^M     </cr:actions>^M     <cr:transformations>^M       <provide-services>^M         <all-services />^M       </provide-services>^M       <provide-persons>^M         <all-persons />^M       </provide-persons>^M       <provide-all-attributes />^M       <provide-devices>^M         <all-devices />^M       </provide-devices>^M     </cr:transformations>^M   </cr:rule>^M   <cr:rule id="rcs_allow_services_anonymous">^M     <cr:conditions>^M       <ocp:anonymous-reque
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_columns: freeing result columns at 0x81c9d44
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_rows: freeing 1 rows
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_row: freeing row values at 0x81c9d68
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_rows: freeing rows at 0x81c9d60
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_result: freeing result set at 0x81c9d18
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:presence:update_watchers_status: start
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_new_result: allocate 28 bytes for result set at 0x81c9d18
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: 4 columns returned from the query
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_allocate_columns: allocate 64 bytes for result columns at 0x81ca83c
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: RES_NAMES(0x81ca84c)[0]=[status]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: use DB_INT result type
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: RES_NAMES(0x81ca854)[1]=[reason]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: use DB_STRING result type
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: RES_NAMES(0x81ca85c)[2]=[watcher_username]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: use DB_STRING result type
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: RES_NAMES(0x81ca864)[3]=[watcher_domain]
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_get_columns: use DB_STRING result type
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:db_mysql:db_mysql_convert_rows: no rows returned from the query
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_columns: freeing result columns at 0x81ca83c
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_rows: freeing 0 rows
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:core:db_free_result: freeing result set at 0x81c9d18
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:mi_xmlrpc:default_method: done running the mi command.
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12934]: DBG:mi_xmlrpc:default_method: done building response.
    Apr 15 12:16:51 AS /usr/local/sbin/opensips[12921]: DBG:tm:utimer_routine: timer routine:4,tl=0xb5a0d978 next=(nil), timeout=42500000
    

    Does it looks right ? Should I search a problem in this first exchange (opensips concern) or this is correct and therefore I should look after why no XMLRPC messages is sent when xcap document is updated (openxcap concern)?

    Regards

     
  • Anca Vamanu

    Anca Vamanu - 2010-04-15

    Hi Clement,

    The xmlrpc response for refreshWatchers command is correct ( even though it is empty ).

    Regards,
    Anca

     
  • Clement

    Clement - 2010-04-15

    Therefore I can concentrate on seeking why no refreshWatchers message is sent by openxcap when the xcap document has been updated.

    Thanks for your help

     
  • Anca Vamanu

    Anca Vamanu - 2010-04-15

    Yes. Good luck!
    Welcome.