[Serdev] BYE gets lost with call from Messenger over isdngw
Jiri Kuthan
jiri at iptel.org
Sun May 2 22:23:24 UTC 2004
At 10:36 PM 5/2/2004, Ulrich Holeschak wrote:
>Hallo,
>now after the CSeq BYE problem has been fixed, i found a new one with BYE, but this time i thinks it's more a problem in ser.
>When i call a PSTN phone with isdngw from Windows Messenger all works well, but the BYE in both directions gets lost (disconnect from Messenger or Phone). If i look in the log file i could see (In this case it's a disconnect from the phone):
>
>May 2 21:31:59 router isdnlog: May 02 21:31:59 Call to tei 121 from phone on phone HANGUP ( 0:00:34)
>May 2 21:31:59 router Sems[3815]: Debug: IsdnCapiConnection::cb_disconnect_b3_ind (media ended)
>May 2 21:31:59 router Sems[3815]: Debug: CALL: PSTN state (outbound): from (CONNECTED|CONNECTED) to (CONNECTED|DISCONNECTED)
>May 2 21:31:59 router Sems[3815]: Debug: PSTN hangup CAPI device
>May 2 21:31:59 router Sems[3815]: Debug: CALL: SIP state (outbound): from (CONNECTED|DISCONNECTED) to (DISCONNECTED|DISCONNECTED)
>May 2 21:31:59 router Sems[3815]: Debug: msg=<:t_uac_dlg:00000EE7071A00D3 BYE sip:494755 at router.local:11289;maddr=192.168.42.242;tr
>May 2 21:31:59 router ./ser[3793]: fifo_get_method: method: 'BYE'
>May 2 21:31:59 router ./ser[3793]: DEBUG: fifo_get_ruri: 'sip:494755 at router.local:11289;maddr=192.168.42.242;transport=tcp'
>May 2 21:31:59 router ./ser[3793]: DEBUG: fifo_get_nexthop: next hop empty
>May 2 21:31:59 router ./ser[3793]: fifo_get_headers: headers: From: <sip:06151494755 at router.local>;tag=00000EE426C41045^M To: "4947
>May 2 21:31:59 router ./ser[3793]: parse_headers: flags=-1
>May 2 21:31:59 router ./ser[3793]: DEBUG: add_param: tag=2f312d4f5fe840bbbce35c44375bd48b
>May 2 21:31:59 router ./ser[3793]: end of header reached, state=29
>May 2 21:31:59 router ./ser[3793]: DEBUG: get_hdr_field: <To> [86]; uri=[sip:494755 at router.local]
>May 2 21:31:59 router ./ser[3793]: DEBUG: to body ["<mailto:494755 at router.local>494755 at router.local" <sip:494755 at router.local>]
>May 2 21:31:59 router ./ser[3793]: get_hdr_field: cseq <CSeq>: <2> <BYE>
>May 2 21:31:59 router ./ser[3793]: DEBUG: fifo_uac: parse_headers succeeded
>May 2 21:31:59 router ./ser[3793]: fifo_get_body: body:
>May 2 21:31:59 router ./ser[3793]: DEBUG: add_param: tag=00000EE426C41045
>May 2 21:31:59 router ./ser[3793]: end of header reached, state=29
>May 2 21:31:59 router ./ser[3793]: DEBUG: get_hfblock: one more hf processed
>May 2 21:31:59 router ./ser[3793]: DEBUG: get_hfblock: one more hf processed
>May 2 21:31:59 router ./ser[3793]: DEBUG: fifo_uac: EoL -- proceeding to transaction creation
>May 2 21:31:59 router ./ser[3793]: DEBUG:tm:t_uac: next_hop=<sip:494755 at router.local:11289;maddr=192.168.42.242;transport=tcp>
>May 2 21:31:59 router ./ser[3793]: DEBUG: mk_proxy: doing DNS lookup...
>May 2 21:31:59 router ./ser[3793]: DEBUG: dlg2hash: 62111
>May 2 21:31:59 router ./ser[3793]: tcp_send: no open tcp connection found, opening new one
>May 2 21:31:59 router ./ser[3793]: ERROR: tcp_blocking_connect: SO_ERROR (111) Connection refused
>May 2 21:31:59 router ./ser[3793]: ERROR: tcpconn_connect: tcp_blocking_connect failed
>May 2 21:31:59 router ./ser[3793]: ERROR: tcp_send: connect failed
>May 2 21:31:59 router ./ser[3793]: msg_send: ERROR: tcp_send failed
>May 2 21:31:59 router ./ser[3793]: t_uac: Attempt to send to 'sip:494755 at router.local:11289;maddr=192.168.42.242;transport=tcp' fai
>May 2 21:31:59 router ./ser[3793]: DEBUG: add_timer_unsafe[0]: 0x402d47d0
>May 2 21:31:59 router ./ser[3793]: **** done consume
>May 2 21:31:59 router ./ser[3793]: INFO: fifo_server: command empty
>May 2 21:31:59 router Sems[3815]: Debug: Write to fifo: completed
>
>You could see the error:
> ERROR: tcp_blocking_connect: SO_ERROR (111) Connection refused
> ERROR: tcpconn_connect: tcp_blocking_connect failed
> msg_send: ERROR: tcp_send failed
>
>Something goes wrong here, what could that be?
>This only occures if the call is made from Windows Messenger!
Possibly it is caused by lack of support of maddr in SER/SEMS's UAC. What you did
works for SER in proxy mode, but maddr is not handled in SER acting as UAC.
>May 2 21:31:59 router ./ser[3793]: DEBUG:tm:t_uac: next_hop=<sip:494755 at router.local:11289;maddr=192.168.42.242;transport=tcp>
Here SER/isdngw tries to determine next hop to send a BYE. It supposingly fails,
because maddr is ignored and a connection is attempted to router.local:11289:TCP
instead of 192.168.42.242:11289:TCP. If this is really the case, a solution could
be to split SER in proxy mode from SER acting as isdngw. Then the SER/SEMS/isdngw
would be fronted by proxy handling the maddr pain for it.
Does this explanation make sense? I would need to see network dumps too to be more
sure. (I can'tt promise to look at them though -- my backlog is too big.)
-jiri
More information about the Serdev
mailing list