Skip to content

Commit f07d9fb

Browse files
Add original options.
1 parent 28273e2 commit f07d9fb

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/mongo/url_parser.ex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ defmodule Mongo.UrlParser do
114114

115115

116116
defp parse_query_options(opts, %{"options" => options}) when is_binary(options) do
117+
IO.puts("#{inspect(opts)} --- #{inspect(options)}")
117118
options
118119
|> String.split("&")
119120
|> Enum.map(fn option -> String.split(option, "=") end)
@@ -128,7 +129,7 @@ defmodule Mongo.UrlParser do
128129

129130
defp parse_seeds(opts, _frags), do: opts
130131

131-
defp resolve_srv_url(%{"seeds" => url, "srv" => srv} = frags)
132+
defp resolve_srv_url(%{"seeds" => url, "srv" => srv, "options" => orig_options} = frags)
132133
when is_bitstring(url) and srv == "+srv" do
133134
# Fix for windows only
134135
with {:win32, _} <- :os.type() do
@@ -137,10 +138,10 @@ defmodule Mongo.UrlParser do
137138

138139
with url_char <- String.to_charlist(url),
139140
{:ok, {_, _, _, _, _, srv_record}} <-
140-
:inet_res.getbyname('_mongodb._tcp.' ++ url_char, :srv),
141+
:inet_res.getbyname('_mongodb._tcp.' ++ url_char, :srv),
141142
{:ok, host} <- get_host_srv(srv_record),
142143
{:ok, {_, _, _, _, _, txt_record}} <- :inet_res.getbyname(url_char, :txt),
143-
txt <- "#{txt_record}&ssl=true" do
144+
txt <- "#{orig_options}&#{txt_record}&ssl=true" do
144145
frags
145146
|> Map.put("seeds", host)
146147
|> Map.put("options", txt)

test/mongo/url_parser_test.exs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ defmodule Mongo.UrlParserTest do
6666
]
6767
end
6868

69+
test "url srv with auth source" do
70+
assert UrlParser.parse_url(url: "mongodb+srv://test10.test.build.10gen.cc/db?replicaSet=r1&authSource=admin") ==
71+
[
72+
database: "db",
73+
ssl: true,
74+
socket_timeout_ms: 500,
75+
auth_source: "admin",
76+
set_name: "r1",
77+
seeds: [
78+
"localhost.test.build.10gen.cc:27017"
79+
]
80+
]
81+
end
82+
6983
test "url srv with user" do
7084
assert UrlParser.parse_url(url: "mongodb+srv://user:[email protected]") |> Keyword.drop([:pw_safe]) ==
7185
[

0 commit comments

Comments
 (0)