Merge pull request #108 from rabbitmq/rabbitmq-erlang-client-107
AMQP(S) URI that specifies port without host should be an error
This commit is contained in:
		
						commit
						054b811252
					
				|  | @ -128,14 +128,19 @@ build_broker(ParsedUri, DefaultVHost) -> | |||
|                              end | ||||
|             end, | ||||
|     UserInfo = proplists:get_value(userinfo, ParsedUri), | ||||
|     set_user_info(case unescape_string(Host) of | ||||
|                       undefined -> #amqp_params_direct{virtual_host = VHost}; | ||||
|                       Host1     -> Mech = mechanisms(ParsedUri), | ||||
|     Record = case {unescape_string(Host), Port} of | ||||
|                  {undefined, undefined} -> | ||||
|                      #amqp_params_direct{virtual_host = VHost}; | ||||
|                  {undefined, _Port} -> | ||||
|                      fail(port_requires_host); | ||||
|                  {Host1, Port1}     -> | ||||
|                      Mech = mechanisms(ParsedUri), | ||||
|                      #amqp_params_network{host            = Host1, | ||||
|                                                         port            = Port, | ||||
|                                           port            = Port1, | ||||
|                                           virtual_host    = VHost, | ||||
|                                           auth_mechanisms = Mech} | ||||
|                   end, UserInfo). | ||||
|              end, | ||||
|     set_user_info(Record, UserInfo). | ||||
| 
 | ||||
| set_user_info(Ps, UserInfo) -> | ||||
|     case UserInfo of | ||||
|  |  | |||
|  | @ -58,6 +58,14 @@ amqp_uri_parsing(_Config) -> | |||
|     ?assertMatch({ok, #amqp_params_direct{username     = <<"">>, | ||||
|                                           virtual_host = <<"">>}}, | ||||
|                  amqp_uri:parse("amqp://:@/")), | ||||
| 
 | ||||
|     % https://github.com/rabbitmq/rabbitmq-server/issues/1663 | ||||
|     ?assertEqual({error,{port_requires_host,"amqp://:1234"}}, | ||||
|                  amqp_uri:parse("amqp://:1234")), | ||||
|     ?assertMatch({ok, #amqp_params_network{host = "localhost", | ||||
|                                            port = 1234}}, | ||||
|                  amqp_uri:parse("amqp://localhost:1234")), | ||||
| 
 | ||||
|     ?assertMatch({ok, #amqp_params_network{username     = <<"">>, | ||||
|                                            password     = <<"">>, | ||||
|                                            virtual_host = <<"">>, | ||||
|  | @ -126,6 +134,12 @@ amqp_uri_parsing(_Config) -> | |||
|                  amqp_uri:parse("amqp://user:pass@[::1]:100")), | ||||
| 
 | ||||
|     %% TLS options | ||||
|     ?assertEqual({error,{port_requires_host,"amqps://:5671"}}, | ||||
|                  amqp_uri:parse("amqps://:5671")), | ||||
|     ?assertMatch({ok, #amqp_params_network{host = "localhost", | ||||
|                                            port = 5671}}, | ||||
|                  amqp_uri:parse("amqps://localhost:5671")), | ||||
| 
 | ||||
|     {ok, #amqp_params_network{host = "host1", ssl_options = TLSOpts1}} = | ||||
|         amqp_uri:parse("amqps://host1/%2f?cacertfile=/path/to/cacertfile.pem"), | ||||
|     Exp1 = [{cacertfile,"/path/to/cacertfile.pem"}], | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue