It seems to be a bug in transactionlayer.erl, function
from_transportlayer_response_no_transaction/3 should return
continue | {pass_to_core, AppModule, YxaCtx}
instead of
continue | {pass_to_core, AppModule}
Otherwise we got case clause exception in sipserver:my_apply/3 where
transactionlayer:from_transportlayer/2 is called...
Here is proposed patch:
--- src/transactionlayer/transactionlayer.erl.orig 2006-12-05
03:34:16.000000000 -0500
+++ src/transactionlayer/transactionlayer.erl 2006-12-08
11:28:45.515354179 -0500
@@ -1043,7 +1043,7 @@
%% YxaCtx = yxa_ctx record()
%% Descrip.: The transport layer passes us a response it has just
%% received.
-%% Returns : {pass_to_core, AppModule} |
+%% Returns : {pass_to_core, AppModule, NewYxaCtx} |
%% continue
%% AppModule = atom(), YXA application module name
%%--------------------------------------------------------------------
@@ -1063,7 +1063,7 @@
end.
%% part of from_transportlayer/1
-%% Returns : continue | {pass_to_core, AppModule}
+%% Returns : continue | {pass_to_core, AppModule, NewYxaCtx}
from_transportlayer_response_no_transaction(Method, Response, _YxaCtx)
when is_list(Method), Method /= "INVITE" ->
%% RFC4320 #4.2 (Action 2)
%% A transaction-stateful SIP proxy MUST NOT send any response to a
@@ -1084,7 +1084,7 @@
nomatch ->
logger:log(debug, "Transaction layer: No state for received
response '~p ~s', "
"passing to ~p:response(...).", [Status, Reason,
AppModule]),
- {pass_to_core, AppModule};
+ {pass_to_core, AppModule, YxaCtx};
DCPid when is_pid(DCPid) ->
case is_process_alive(DCPid) of
true ->
Fredrik Thulin wrote:
> This is hopefully the last snapshot before YXA 1.0.
>
> Changes since snapshot 2006-09-22 :
>
> * Move to Erlang/OTP R11B-2.
>
> * Fix all anomalies reported by (patched) Dialyzer from R11B-2.
>
> * Made the SIP DNS implementation in sipdst.erl RFC3263 compliant. This
> might hurt you if you have phones that only do UDP (and therefor
> suck). You might need to work around their lack of functionality by
> setting udp_max_datagram_size to something larger than your MTU (like
> 3072 or similar).
>
> * Changed the API for YXA applications request- and response functions
> (see separate mail to yxa-devel mailing list).
>
> * Imported latest eldap (LDAP client) from jungerl, and improved the way
> we try to reconnect when LDAP connections fails.
>
> * Various updates to the new eventserver after having interop-tested it
> at SIPit 19. Presence works with some clients and a bit of luck now.
> Both presence and dialog event packages are still experimental.
>
> * Made Outbound registrations work over UDP too (was buggy).
>
> * Introduced configuration validation types 'tuple' and '{tuple, Arity}'
>
> * Got rid of lots of 'magic tuples' in the transport layer.
>
> * Made logging more configurable. Based on patch by Serge Aleynikov.
>
> * Added hook for possible modification of request/destination between
> YXA applications and sippipe.
>
> * Introduce yxa_test_config making it possible to supply 'fake'
> configuration in unit tests.
>
> * Implement sipuserdb_test backend for use in unit tests.
>
> * Rewrote most of pstnproxy, and added tests covering much larger parts
> of the applications logic than was possible before yxa_test_config and
> sipuserdb_test.
>
> * Made it possible to override the IP address detection code with the
> configuration parameter 'myips'.
>
>
> plus bug fixes and assorted added test cases.
>
>
> MD5 :
>
> f34bddd0fc3eb944dc544064f12911d8 yxa-2006-12-05.tar.gz
>
> SHA1 :
>
> 70ab1998c2ddad7c2aa789e35545025f7c31cb32 yxa-2006-12-05.tar.gz
>
>
>
> /Fredrik
> _______________________________________________
> Yxa-devel mailing list
> [email protected]
> https://lists.su.se/mailman/listinfo/yxa-devel
>
_______________________________________________
Yxa-devel mailing list
[email protected]
https://lists.su.se/mailman/listinfo/yxa-devel