diff options
author | Erlang/OTP <[email protected]> | 2013-03-22 09:42:01 +0100 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2013-03-22 09:42:01 +0100 |
commit | 7a402020aa3e89bbd945672ef39c3fc6bcf883ad (patch) | |
tree | 7a32be1e4cc8de9deaa47ae92b406887c48f791d /lib/orber | |
parent | e173bc1b28453f0edb4863677f3c730b3d7a9f91 (diff) | |
parent | 9e69870e67b06ee1ec83ba8c81de7c7d88bf790f (diff) | |
download | otp-7a402020aa3e89bbd945672ef39c3fc6bcf883ad.tar.gz otp-7a402020aa3e89bbd945672ef39c3fc6bcf883ad.tar.bz2 otp-7a402020aa3e89bbd945672ef39c3fc6bcf883ad.zip |
Merge branch 'lars/orber/corbaloc-bug-r16-version/OTP-10675' into maint-r16
* lars/orber/corbaloc-bug-r16-version/OTP-10675:
[orber] Fix bug in corbaloc/corbaname over ssl
Diffstat (limited to 'lib/orber')
-rw-r--r-- | lib/orber/COSS/CosNaming/orber_cosnaming_utils.erl | 56 | ||||
-rw-r--r-- | lib/orber/doc/src/notes.xml | 18 | ||||
-rw-r--r-- | lib/orber/src/orber_env.erl | 4 | ||||
-rw-r--r-- | lib/orber/vsn.mk | 3 |
4 files changed, 75 insertions, 6 deletions
diff --git a/lib/orber/COSS/CosNaming/orber_cosnaming_utils.erl b/lib/orber/COSS/CosNaming/orber_cosnaming_utils.erl index 768653c898..aa582d1d4e 100644 --- a/lib/orber/COSS/CosNaming/orber_cosnaming_utils.erl +++ b/lib/orber/COSS/CosNaming/orber_cosnaming_utils.erl @@ -30,7 +30,7 @@ -include("CosNaming_NamingContext.hrl"). -include("CosNaming_NamingContextExt.hrl"). -include_lib("orber/include/corba.hrl"). - +-include_lib("orber/src/orber_iiop.hrl"). %%----------------------------------------------------------------- %% External exports @@ -182,6 +182,8 @@ address(protocol, [$:|T], [], []) -> address(version, T, [], [iiop]); address(protocol, [$i, $i, $o, $p, $:|T], [], []) -> address(version, T, [], [iiop]); +address(protocol, [$s,$s,$l, $i, $o, $p, $:|T], [], []) -> + address(version, T, [], [ssliop]); address(protocol, [$r, $i, $r, $:|T], [], []) -> {false, rir, T}; address(protocol, What, _, _) -> @@ -465,6 +467,20 @@ lookup({corbaname, [[iiop, Vers, Host, Port]|Addresses], Key, Name}, Ctx) -> Obj -> Obj end; +%%% Corbaname via SSL +lookup({corbaname, [[ssliop, Vers, Host, Port]|Addresses], Key, Name}, Ctx) -> + SSLComponent = + #'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, + component_data=#'SSLIOP_SSL'{target_supports = 2, + target_requires = 2, + port = Port}}, + NS = iop_ior:create_external(Vers, key2id(Key), Host, Port, Key, [SSLComponent]), + case catch 'CosNaming_NamingContext':resolve(NS, Ctx, Name) of + {'EXCEPTION', _} -> + lookup({corbaname, Addresses, Key, Name}, Ctx); + Obj -> + Obj + end; lookup({corbaname, [_|Addresses], Key, Name}, Ctx) -> lookup({corbaname, Addresses, Key, Name}, Ctx); @@ -498,7 +514,43 @@ lookup({corbaloc, [[iiop, Vers, Host, Port]|Addresses], Key}, Ctx) -> lookup({corbaloc, Addresses, Key}, Ctx) end end; - + +%%% Corbaloc via SSL +lookup({corbaloc, [[ssliop, Vers, Host, Port]|Addresses], Key}, Ctx) -> + SSLComponent = + #'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, + component_data=#'SSLIOP_SSL'{target_supports = 2, + target_requires = 2, + port = Port}}, + ObjRef = iop_ior:create_external(Vers, key2id(Key), Host, Port, Key, [SSLComponent]), + OldVal = put(orber_forward_notify, true), + + case catch corba_object:non_existent(ObjRef, Ctx) of + {location_forward, Result} -> + put(orber_forward_notify, OldVal), + Result; + false -> + put(orber_forward_notify, OldVal), + ObjRef; + true -> + put(orber_forward_notify, OldVal), + lookup({corbaloc, Addresses, Key}, Ctx); + _ -> + %% May be located on a version using '_not_existent' + %% see CORBA2.3.1 page 15-34 try again. + case catch corba_object:not_existent(ObjRef, Ctx) of + {location_forward, Result} -> + put(orber_forward_notify, OldVal), + Result; + false -> + put(orber_forward_notify, OldVal), + ObjRef; + _ -> + put(orber_forward_notify, OldVal), + lookup({corbaloc, Addresses, Key}, Ctx) + end + end; + lookup({corbaloc, [_|Addresses], Key}, Ctx) -> lookup({corbaloc, Addresses, Key}, Ctx); diff --git a/lib/orber/doc/src/notes.xml b/lib/orber/doc/src/notes.xml index d43ab3ac24..9e896f03c8 100644 --- a/lib/orber/doc/src/notes.xml +++ b/lib/orber/doc/src/notes.xml @@ -32,6 +32,22 @@ <file>notes.xml</file> </header> + + <section><title>Orber 3.6.26</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix bug in corbaloc/corbaname over ssl.</p> + <p> + Own Id: OTP-10675</p> + </item> + </list> + </section> + + </section> + <section><title>Orber 3.6.25</title> <section><title>Improvements and New Features</title> @@ -45,7 +61,6 @@ </list> </section> - <section><title>Known Bugs and Problems</title> <list> <item> @@ -57,7 +72,6 @@ </item> </list> </section> - </section> <section><title>Orber 3.6.24</title> diff --git a/lib/orber/src/orber_env.erl b/lib/orber/src/orber_env.erl index 8758450104..67d31018ff 100644 --- a/lib/orber/src/orber_env.erl +++ b/lib/orber/src/orber_env.erl @@ -302,6 +302,7 @@ create_security_info(ssl, Info) -> "SSL IIOP accept timeout.......: ~p~n" "SSL IIOP backlog..............: ~p~n" "SSL IIOP Local Interface......: ~p~n" + "SSL server options............: ~p~n" "SSL server certfile...........: ~p~n" "SSL server verification type..: ~p~n" "SSL server verification depth.: ~p~n" @@ -310,6 +311,7 @@ create_security_info(ssl, Info) -> "SSL server password...........: ~p~n" "SSL server ciphers............: ~p~n" "SSL server cachetimeout.......: ~p~n" + "SSL client options............: ~p~n" "SSL client certfile...........: ~p~n" "SSL client verification type..: ~p~n" "SSL client verification depth.: ~p~n" @@ -323,10 +325,12 @@ create_security_info(ssl, Info) -> iiop_ssl_in_keepalive(), iiop_ssl_out_keepalive(), nat_iiop_ssl_port(), iiop_ssl_accept_timeout(), iiop_ssl_backlog(), iiop_ssl_ip_address_local(), + ssl_server_options(), ssl_server_certfile(), ssl_server_verify(), ssl_server_depth(), ssl_server_cacertfile(), ssl_server_keyfile(), ssl_server_password(), ssl_server_ciphers(), ssl_server_cachetimeout(), + ssl_client_options(), ssl_client_certfile(), ssl_client_verify(), ssl_client_depth(), ssl_client_cacertfile(), ssl_client_keyfile(), ssl_client_password(), diff --git a/lib/orber/vsn.mk b/lib/orber/vsn.mk index 10b19477e0..4e09532f88 100644 --- a/lib/orber/vsn.mk +++ b/lib/orber/vsn.mk @@ -1,3 +1,2 @@ - -ORBER_VSN = 3.6.25 +ORBER_VSN = 3.6.26 |