Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clear out cache variables when loading the package #34

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/NetworkOptions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,10 @@ include("ca_roots.jl")
include("ssh_options.jl")
include("verify_host.jl")

function __init__()
SYSTEM_CA_ROOTS[] = nothing
BUNDLED_KNOWN_HOSTS_FILE[] = nothing
empty!(ENV_HOST_PATTERN_CACHE)
end

end # module
45 changes: 25 additions & 20 deletions src/ca_roots.jl
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ const BSD_CA_ROOTS = [
]

const SYSTEM_CA_ROOTS_LOCK = ReentrantLock()
const SYSTEM_CA_ROOTS = Ref{String}()
const SYSTEM_CA_ROOTS = Ref{Union{String,Nothing}}(nothing)
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const SYSTEM_CA_ROOTS = Ref{Union{String,Nothing}}(nothing)
const SYSTEM_CA_ROOTS = Ref{Union{String, Nothing}}(nothing)

The pickiest of nits. Just because the other one has the space.


const BEGIN_CERT_REGULAR = "-----BEGIN CERTIFICATE-----"
const BEGIN_CERT_OPENSSL = "-----BEGIN TRUSTED CERTIFICATE-----"
Expand All @@ -84,29 +84,34 @@ NetworkOptions could only find OpenSSL-specific TLS certificates which cannot be

function system_ca_roots()
lock(SYSTEM_CA_ROOTS_LOCK) do
isassigned(SYSTEM_CA_ROOTS) && return # from lock()
search_path = Sys.islinux() ? LINUX_CA_ROOTS :
Sys.isbsd() && !Sys.isapple() ? BSD_CA_ROOTS : String[]
openssl_only = false
for path in search_path
ispath(path) || continue
for line in eachline(path)
if line == BEGIN_CERT_REGULAR
SYSTEM_CA_ROOTS[] = path
return # from lock()
elseif line == BEGIN_CERT_OPENSSL
openssl_only = true
roots = SYSTEM_CA_ROOTS[]
if roots === nothing
search_path = Sys.islinux() ? LINUX_CA_ROOTS :
Sys.isbsd() && !Sys.isapple() ? BSD_CA_ROOTS : String[]
openssl_only = false
for path in search_path
ispath(path) || continue
for line in eachline(path)
if line == BEGIN_CERT_REGULAR
roots = path
openssl_only = false
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this change more of the logic than just SYSTEM_CA_ROOTS? Was there another issue to fix here?

Copy link
Sponsor Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll change it back, I just wanted it to be more similar to how it was changed in BUNDLED_KNOWN_HOSTS_FILE

Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine, I just wasn't sure about the openssl_only part, which looks like a logic change to me.

break
elseif line == BEGIN_CERT_OPENSSL
openssl_only = true
end
end
end
# warn if we:
# 1. did not find any regular certs
# 2. did find OpenSSL-only certs
openssl_only && @warn OPENSSL_WARNING
# TODO: extract system certs on Windows & macOS
if roots === nothing
roots = bundled_ca_roots()
end
end
# warn if we:
# 1. did not find any regular certs
# 2. did find OpenSSL-only certs
openssl_only && @warn OPENSSL_WARNING
# TODO: extract system certs on Windows & macOS
SYSTEM_CA_ROOTS[] = bundled_ca_roots()
return SYSTEM_CA_ROOTS[] = roots::String
end
return SYSTEM_CA_ROOTS[]
end

const CA_ROOTS_VARS = [
Expand Down
7 changes: 0 additions & 7 deletions src/ssh_options.jl
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,6 @@ function bundled_known_hosts()
end
end

function __init__()
# Reset in case we serialized a value here.
lock(BUNDLED_KNOWN_HOSTS_LOCK) do
BUNDLED_KNOWN_HOSTS_FILE[] = nothing
end
end

const BUNDLED_KNOWN_HOSTS = """
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
Expand Down
Loading