Bugs item #1808421, was opened at 2007-10-06 04:04 Message generated for change (Settings changed) made by bogdan_iancu You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1808421&group_id=139143
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: ver devel Status: Open Resolution: None >Priority: 7 Private: No Submitted By: reticent (unspin) >Assigned to: Bogdan (bogdan_iancu) Summary: Serious Dialog Persistence Problems Initial Comment: 1. Dialogs aren't removed from the database when a BYE message is received immediately after a call is established (call, then hang up), if you wait 5 seconds before hanging up then the record is properly removed from the database A timer process is created which increments the ref count on that specific dialog, so the mechanism to remove the record is skipped over due to this none zero ref count bug1: where the timer is created, and a bye comes in before the timer expires, therefore the dialog is never distroyed due to dlg->ref greater than 0. Oct 6 00:42:21 spb1 OpenSER[4732]: core:forward_request: sending: ACK sip:[EMAIL PROTECTED]:5080 SIP/2.0 Via: SIP/2.0/UDP 207.232.98.31:15061;branch=z9hG4bKa882.d4d47456.2 Via: SIP/2.0/UDP 192.168.99.63:5070;rport=5070;received=207.232.98.114;branch=z9hG4bK-1fdef174 From: "Peter" <sip:[EMAIL PROTECTED]:15061>;tag=3d58c4a0e48788d7o1 To: <sip:[EMAIL PROTECTED]:15061>;tag=as3d3956fa Call-ID: [EMAIL PROTECTED] CSeq: 102 ACK Max-Forwards: 14 Proxy-Authorization: Digest username="200110002497",realm="van.galnet.ca",nonce="4706db19f9092f764ca009cd617d666f2b333087",uri="sip:[EMAIL PROTECTED]:15061",algorithm=MD5,response="abc88944612991d306758a7e5f52406e",qop=auth,nc=00000001,cnonce="69c15487" Contact: "Peter" <sip:[EMAIL PROTECTED]:5070> User-Agent: Linksys/SPA962-5.1.7 Content-Length: 0 . Oct 6 00:42:21 spb1 OpenSER[4732]: core:forward_request: orig. len=774, new_len=785, proto=1 Oct 6 00:42:21 spb1 OpenSER[4732]: DEBUG:tm:UNREF_UNSAFE: after is 0 Oct 6 00:42:21 spb1 OpenSER[4732]: core:destroy_avp_list: destroying list (nil) Oct 6 00:42:21 spb1 OpenSER[4732]: core:receive_msg: cleaning up Oct 6 00:42:22 spb1 OpenSER[4746]: DEBUG: timer routine:4,tl=0xb6b9625c next=(nil), timeout=744500000 Oct 6 00:42:22 spb1 asterisk[3157]: VERBOSE[5059]: -- Executing DateTime("SIP/15061-08159568", "") in new stack Oct 6 00:42:22 spb1 asterisk[3157]: DEBUG[5059]: say.c:2988 in ast_say_date_with_format_en: Parsing A (offset 0) in ABdY 'digits/at' IMp Oct 6 00:42:22 spb1 asterisk[3157]: VERBOSE[5059]: -- Playing 'digits/day-6' (language 'en') Oct 6 00:42:23 spb1 OpenSER[4736]: core:udp_rcv_loop: probing packet received from 207.232.98.114 52755 Oct 6 00:42:23 spb1 asterisk[3157]: DEBUG[5059]: say.c:2988 in ast_say_date_with_format_en: Parsing B (offset 1) in ABdY 'digits/at' IMp Oct 6 00:42:23 spb1 asterisk[3157]: VERBOSE[5059]: -- Playing 'digits/mon-9' (language 'en') Oct 6 00:42:24 spb1 asterisk[3157]: DEBUG[5059]: say.c:2988 in ast_say_date_with_format_en: Parsing d (offset 2) in ABdY 'digits/at' IMp Oct 6 00:42:24 spb1 asterisk[3157]: VERBOSE[5059]: -- Playing 'digits/h-6' (language 'en') Oct 6 00:42:25 spb1 asterisk[3157]: DEBUG[5059]: say.c:2988 in ast_say_date_with_format_en: Parsing Y (offset 3) in ABdY 'digits/at' IMp Oct 6 00:42:25 spb1 asterisk[3157]: VERBOSE[5059]: -- Playing 'digits/2' (language 'en') Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_msg: SIP Request: Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_msg: method: <BYE> Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_msg: uri: <sip:[EMAIL PROTECTED]:5080> Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_msg: version: <SIP/2.0> Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=2 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_via_param: found param type 232, <branch> = <z9hG4bK-7bf12383>; state=16 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_via: end of header reached, state=5 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: via found, flags=2 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: this is the first via Oct 6 00:42:25 spb1 OpenSER[4740]: core:receive_msg: After parse_msg... Oct 6 00:42:25 spb1 OpenSER[4740]: core:receive_msg: preparing to run routing scripts... Oct 6 00:42:25 spb1 OpenSER[4740]: Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=10 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to_param: tag=3d58c4a0e48788d7o1 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to: end of header reached, state=29 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to: display={"Peter"}, ruri={sip:[EMAIL PROTECTED]:15061} Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=8 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to_param: tag=as3d3956fa Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to: end of header reached, state=29 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_to: display={}, ruri={sip:[EMAIL PROTECTED]:15061} Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: <To> [50]; uri=[sip:[EMAIL PROTECTED]:15061] Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: to body [<sip:[EMAIL PROTECTED]:15061>] Oct 6 00:42:25 spb1 OpenSER[4740]: [200110002497] Route{main}: New Message METHOD: [BYE] TO: [*33] Oct 6 00:42:25 spb1 OpenSER[4740]: [200110002497] Route{main}: Source IP: [207.232.98.114] Oct 6 00:42:25 spb1 OpenSER[4740]: [200110002497] Route{main}; Request URI - [sip:[EMAIL PROTECTED]:5080] - Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=80 Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: cseq <CSeq>: <103> <BYE> Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: content_length=0 Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: found end of header Oct 6 00:42:25 spb1 OpenSER[4740]: core:pv_get_contact: no contact header! Oct 6 00:42:25 spb1 OpenSER[4740]: [200110002497] Route{main}: Contact Header: [<null>] Oct 6 00:42:25 spb1 OpenSER[4740]: ################################################################################ Oct 6 00:42:25 spb1 OpenSER[4740]: maxfwd:is_maxfwd_present: value = 15 Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=200 Oct 6 00:42:25 spb1 OpenSER[4740]: is_preloaded: No Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if host==us: 13==13 && [207.232.98.31] == [207.232.98.31] Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if port 15061 matches port 5080 Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if host==us: 13==13 && [207.232.98.31] == [207.232.98.31] Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if port 15061 matches port 5080 Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if host==us: 13==9 && [207.232.98.31] == [127.0.0.1] Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if port 15061 matches port 5080 Oct 6 00:42:25 spb1 OpenSER[4740]: core:check_self: host != me Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if host==us: 13==13 && [207.232.98.31] == [207.232.98.31] Oct 6 00:42:25 spb1 OpenSER[4740]: core:grep_sock_info: checking if port 15061 matches port 15061 Oct 6 00:42:25 spb1 OpenSER[4740]: after_loose: Topmost route URI: 'sip:207.232.98.31:15061;lr;ftag=3d58c4a0e48788d7o1;bid=bPP.x3v.E7g;nid=UX0.v9G.Wu3' is me Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=200 Oct 6 00:42:25 spb1 OpenSER[4740]: core:get_hdr_field: found end of header Oct 6 00:42:25 spb1 OpenSER[4740]: find_next_route: No next Route HF found Oct 6 00:42:25 spb1 OpenSER[4740]: after_loose: No next URI found Oct 6 00:42:25 spb1 OpenSER[4740]: DBG:rr:run_rr_callbacks: callback id 0 entered with <lr;ftag=3d58c4a0e48788d7o1;bid=bPP.x3v.E7g;nid=UX0.v9G.Wu3> Oct 6 00:42:25 spb1 OpenSER[4740]: core:parse_headers: flags=48 Oct 6 00:42:25 spb1 OpenSER[4740]: dialog:internal_get_dlg: dialog callid='[EMAIL PROTECTED]' found on entry 9, dir=2 Oct 6 00:42:25 spb1 OpenSER[4740]: dialog:next_state_dlg: dialog 0xb6b94240 changed from state 4 to state 5, due event 7 Oct 6 00:42:25 spb1 OpenSER[4740]: dialog:dlg_onroute: BYE successfully processed Oct 6 00:42:25 spb1 OpenSER[4740]: dialog:unref_dlg: unref dlg 0xb6b94240 with 2 -> 1 2. When the dialog goes from state 5 to state 5 (which occurs after the first bug mentioned above, several seconds after the BYE message is received) another attempt is made by OpenSER to delete the dialog from the database, however the context at that point is that of a timer process and not an openser child process so there is no database connection handle available BUG2: On the timer expire no db handle after the BYE. Oct 6 00:42:25 spb1 OpenSER[4740]: core:_shm_resize: resize(0) called Oct 6 00:42:25 spb1 OpenSER[4740]: DEBUG: add_to_tail_of_timer[2]: 0xb6b93470 (752) Oct 6 00:42:25 spb1 OpenSER[4740]: DEBUG:tm:relay_reply: sent buf=0x81af688: SIP/2.0 2..., shmem=0xb6b95758: SIP/2.0 2 Oct 6 00:42:25 spb1 OpenSER[4740]: DEBUG: cleanup_uac_timers: RETR/FR timers reset Oct 6 00:42:25 spb1 OpenSER[4740]: DEBUG:tm:UNREF_UNSAFE: after is 0 Oct 6 00:42:25 spb1 OpenSER[4740]: core:destroy_avp_list: destroying list (nil) Oct 6 00:42:25 spb1 OpenSER[4740]: core:receive_msg: cleaning up Oct 6 00:42:26 spb1 OpenSER[4746]: DEBUG: timer routine:2,tl=0xb6b96158 next=(nil), timeout=748 Oct 6 00:42:26 spb1 OpenSER[4746]: DEBUG: wait_handler : removing 0xb6b96110 from table Oct 6 00:42:26 spb1 OpenSER[4746]: DEBUG: delete transaction 0xb6b96110 Oct 6 00:42:26 spb1 OpenSER[4746]: DBG: trans=0xb6b96110, callback type 2048, id 0 entered Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:next_state_dlg: unref dlg 0xb6b94240 with 1 -> 0 Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:next_state_dlg: destroying a dialog Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:destroy_dlg: destroing dialog 0xb6b94240 Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:remove_dialog_from_db: trying to remove a dialog, update_flag is 0 Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:use_dialog_table: invalid database handle Oct 6 00:42:26 spb1 OpenSER[4746]: dialog:next_state_dlg: dialog 0xb6b94240 changed from state 5 to state 5, due event 1 Oct 6 00:42:26 spb1 OpenSER[4746]: DEBUG: wait_handler : done Oct 6 00:42:26 spb1 OpenSER[4746]: DEBUG: timer routine:4,tl=0xb6b93574 next=(nil), timeout=748100000 ---------------------------------------------------------------------- Comment By: reticent (unspin) Date: 2007-10-06 04:07 Message: Logged In: YES user_id=1568212 Originator: YES Here is the dialog module configuration we are using, we were able to reproduce both these issues with a copy of TRUNK checked out this afternoon # Documentation says default is 0, but it's -1 according to source.. wth? breaks... modparam("dialog", "dlg_flag", 20) # Number of buckets in the hash table (don't change this without clearing the dialog table) modparam("dialog", "hash_size", 16) # Collect Stats modparam("dialog", "enable_stats", 1) # AVP used to specify a custom timeout for the dialog # - Not sure if this will actually tear the dialog down (might need to use the b2bua module) # modparam("dialog", "timeout_avp", "$avp(i:10)") # Default dialog timeout # modparam("dialog", "default_timeout", 43200) # Set the dialog matching mode # 2 - Use the SIP elements modparam("dialog", "dlg_match_mode", 2) # Dialog Database Mode # 2 - Delayed Mode modparam("dialog", "db_mode", 1) # How often OpenSER syncs Dialogs to the database modparam("dialog", "db_update_period", 1) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1808421&group_id=139143 _______________________________________________ Devel mailing list Devel@openser.org http://openser.org/cgi-bin/mailman/listinfo/devel