Greetings, This is a question to the author: bogdan_iancu, but if anybody can answer, I'd appreciate it. Softphone client is Bria.
Here is publish event from ngrep
PUBLISH sip:tolyp@webley SIP/2.0. Via: SIP/2.0/TCP 10.50.1.101:45464;branch=z9hG4bK-
T 2008/10/13 16:15:38.621949 10.50.1.101:1572 -> 10.50.4.40:5070 [AP] d8754z-697cf1172b7bf515-1---d8754z-;rport. Max-Forwards: 70. Contact: sip:tolyp@10.50.1.101:1572;transport=TCP. To: "tolyp"sip:tolyp@webley. From: "tolyp"sip:tolyp@webley;tag=ca65f37d. Call-ID: YmFlNjUxMzEwM2Q4Nzk0MWRhZGUxZmQwMDA5NmE4Nzc.. CSeq: 1 PUBLISH. Expires: 3600. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO. Content-Type: application/pidf+xml. User-Agent: Bria release 2.4 stamp 49274. Event: presence. Content-Length: 441. . <?xml version='1.0' encoding='UTF-8'?><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' xmlns:lt='urn:ietf:params:xml:ns:location-type' entity='sip:tolyp@webley'><tuple id='t5a055764'><status><basic>open</basic></status></tuple>dm:person id='p5e347748'dm:noteAvailable</dm:note></dm:person></presence>
Here is the code from parser/parse_event.c
if ((_e->text.len == PRES_STR_LEN) && !strncasecmp(PRES_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE; } else if ((_e->text.len == PRES_XCAP_CHANGE_STR_LEN) && !strncasecmp(PRES_XCAP_CHANGE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_XCAP_CHANGE; } else if ((_e->text.len == PRES_WINFO_STR_LEN) && !strncasecmp(PRES_WINFO_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE_WINFO; } else if ((_e->text.len == PRES_SIP_PROFILE_STR_LEN) && !strncasecmp(PRES_SIP_PROFILE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_SIP_PROFILE; } else if ((_e->text.len == DIALOG_STR_LEN) && !strncasecmp(DIALOG_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_DIALOG; } else if ((_e->text.len == MWI_STR_LEN) && !strncasecmp(MWI_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_MWI; } else { _e->parsed = EVENT_OTHER; } if( (*end)== ';') { str params_str; params_str.s= end+1; end= skip_token(params_str.s, tmp.len- _e->text.len- 1); params_str.len= end- params_str.s;
if (parse_params(¶ms_str, CLASS_ANY, &phooks, &_e->params)<0) return -1; } else _e->params= NULL;
It detects presence event correctly, but then if( (*end)== ';') does not find any semicolon and here is the result: 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 508> Missing or unsupported event header field value 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 511> event=[presence]
What semicolon it is looking? If I do (*end)== ' ') it still can't parse. Is Bria message has incorrect format? What was the format of message the parser was written for?
Thanks a lot, Toly
openser is 1.3.3
toly wrote:
Greetings, This is a question to the author: bogdan_iancu, but if anybody can answer, I'd appreciate it. Softphone client is Bria.
Here is publish event from ngrep
PUBLISH sip:tolyp@webley SIP/2.0. Via: SIP/2.0/TCP 10.50.1.101:45464;branch=z9hG4bK-
T 2008/10/13 16:15:38.621949 10.50.1.101:1572 -> 10.50.4.40:5070 [AP] d8754z-697cf1172b7bf515-1---d8754z-;rport. Max-Forwards: 70. Contact: sip:tolyp@10.50.1.101:1572;transport=TCP. To: "tolyp"sip:tolyp@webley. From: "tolyp"sip:tolyp@webley;tag=ca65f37d. Call-ID: YmFlNjUxMzEwM2Q4Nzk0MWRhZGUxZmQwMDA5NmE4Nzc.. CSeq: 1 PUBLISH. Expires: 3600. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO. Content-Type: application/pidf+xml. User-Agent: Bria release 2.4 stamp 49274. Event: presence. Content-Length: 441. .
<?xml version='1.0' encoding='UTF-8'?><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' xmlns:lt='urn:ietf:params:xml:ns:location-type' entity='sip:tolyp@webley'><tuple id='t5a055764'><status><basic>open</basic></status></tuple>dm:person id='p5e347748'dm:noteAvailable</dm:note></dm:person></presence>
Here is the code from parser/parse_event.c
if ((_e->text.len == PRES_STR_LEN) && !strncasecmp(PRES_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE; } else if ((_e->text.len == PRES_XCAP_CHANGE_STR_LEN) && !strncasecmp(PRES_XCAP_CHANGE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_XCAP_CHANGE; } else if ((_e->text.len == PRES_WINFO_STR_LEN) && !strncasecmp(PRES_WINFO_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE_WINFO; } else if ((_e->text.len == PRES_SIP_PROFILE_STR_LEN) && !strncasecmp(PRES_SIP_PROFILE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_SIP_PROFILE; } else if ((_e->text.len == DIALOG_STR_LEN) && !strncasecmp(DIALOG_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_DIALOG; } else if ((_e->text.len == MWI_STR_LEN) && !strncasecmp(MWI_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_MWI; } else { _e->parsed = EVENT_OTHER; } if( (*end)== ';') { str params_str; params_str.s= end+1; end= skip_token(params_str.s, tmp.len- _e->text.len- 1); params_str.len= end- params_str.s;
if (parse_params(¶ms_str, CLASS_ANY, &phooks, &_e->params)<0) return -1;
} else _e->params= NULL;
It detects presence event correctly, but then if( (*end)== ';') does not find any semicolon and here is the result: 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 508> Missing or unsupported event header field value 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 511> event=[presence]
What semicolon it is looking? If I do (*end)== ' ') it still can't parse. Is Bria message has incorrect format? What was the format of message the parser was written for?
Thanks a lot, Toly
You have to load the presence_xml module, which registers the "presence" event type to the generice presence module. (probably the module naming is confusing)
klaus
toly schrieb:
openser is 1.3.3
toly wrote:
Greetings, This is a question to the author: bogdan_iancu, but if anybody can answer, I'd appreciate it. Softphone client is Bria.
Here is publish event from ngrep
PUBLISH sip:tolyp@webley SIP/2.0. Via: SIP/2.0/TCP 10.50.1.101:45464;branch=z9hG4bK-
T 2008/10/13 16:15:38.621949 10.50.1.101:1572 -> 10.50.4.40:5070 [AP] d8754z-697cf1172b7bf515-1---d8754z-;rport. Max-Forwards: 70. Contact: sip:tolyp@10.50.1.101:1572;transport=TCP. To: "tolyp"sip:tolyp@webley. From: "tolyp"sip:tolyp@webley;tag=ca65f37d. Call-ID: YmFlNjUxMzEwM2Q4Nzk0MWRhZGUxZmQwMDA5NmE4Nzc.. CSeq: 1 PUBLISH. Expires: 3600. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO. Content-Type: application/pidf+xml. User-Agent: Bria release 2.4 stamp 49274. Event: presence. Content-Length: 441. .
<?xml version='1.0' encoding='UTF-8'?><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' xmlns:lt='urn:ietf:params:xml:ns:location-type' entity='sip:tolyp@webley'><tuple id='t5a055764'><status><basic>open</basic></status></tuple>dm:person id='p5e347748'dm:noteAvailable</dm:note></dm:person></presence>
Here is the code from parser/parse_event.c
if ((_e->text.len == PRES_STR_LEN) && !strncasecmp(PRES_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE; } else if ((_e->text.len == PRES_XCAP_CHANGE_STR_LEN) && !strncasecmp(PRES_XCAP_CHANGE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_XCAP_CHANGE; } else if ((_e->text.len == PRES_WINFO_STR_LEN) && !strncasecmp(PRES_WINFO_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_PRESENCE_WINFO; } else if ((_e->text.len == PRES_SIP_PROFILE_STR_LEN) && !strncasecmp(PRES_SIP_PROFILE_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_SIP_PROFILE; } else if ((_e->text.len == DIALOG_STR_LEN) && !strncasecmp(DIALOG_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_DIALOG; } else if ((_e->text.len == MWI_STR_LEN) && !strncasecmp(MWI_STR, tmp.s, _e->text.len)) { _e->parsed = EVENT_MWI; } else { _e->parsed = EVENT_OTHER; } if( (*end)== ';') { str params_str; params_str.s= end+1; end= skip_token(params_str.s, tmp.len- _e->text.len- 1); params_str.len= end- params_str.s;
if (parse_params(¶ms_str, CLASS_ANY, &phooks, &_e->params)<0) return -1;
} else _e->params= NULL;
It detects presence event correctly, but then if( (*end)== ';') does not find any semicolon and here is the result: 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 508> Missing or unsupported event header field value 10/13 16:34:57 13030 err ERROR:presence:handle_publish: <publish.c: 511> event=[presence]
What semicolon it is looking? If I do (*end)== ' ') it still can't parse. Is Bria message has incorrect format? What was the format of message the parser was written for?
Thanks a lot, Toly