mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
added when() block so that the compiler doesn't try to link SSL methods when SSL isn't available
This commit is contained in:
@@ -418,28 +418,31 @@ proc request*(url: string, httpMethod: string, extraHeaders = "",
|
||||
# send the appropiate CONNECT header. If not, simply connect to the proper
|
||||
# host (which may still be the proxy, for normal HTTP)
|
||||
if proxy != nil and hostUrl.scheme == "https":
|
||||
var connectHeaders = "CONNECT "
|
||||
let targetPort = if hostUrl.port == "": 443 else: hostUrl.port.parseInt
|
||||
connectHeaders.add(hostUrl.hostname)
|
||||
connectHeaders.add(":" & $targetPort)
|
||||
connectHeaders.add(" HTTP/1.1\c\L")
|
||||
connectHeaders.add("Host: " & hostUrl.hostname & ":" & $targetPort & "\c\L")
|
||||
if proxy.auth != "":
|
||||
let auth = base64.encode(proxy.auth, newline = "")
|
||||
connectHeaders.add("Proxy-Authorization: basic " & auth & "\c\L")
|
||||
connectHeaders.add("\c\L")
|
||||
if timeout == -1:
|
||||
s.connect(r.hostname, port)
|
||||
else:
|
||||
s.connect(r.hostname, port, timeout)
|
||||
when defined(ssl):
|
||||
var connectHeaders = "CONNECT "
|
||||
let targetPort = if hostUrl.port == "": 443 else: hostUrl.port.parseInt
|
||||
connectHeaders.add(hostUrl.hostname)
|
||||
connectHeaders.add(":" & $targetPort)
|
||||
connectHeaders.add(" HTTP/1.1\c\L")
|
||||
connectHeaders.add("Host: " & hostUrl.hostname & ":" & $targetPort & "\c\L")
|
||||
if proxy.auth != "":
|
||||
let auth = base64.encode(proxy.auth, newline = "")
|
||||
connectHeaders.add("Proxy-Authorization: basic " & auth & "\c\L")
|
||||
connectHeaders.add("\c\L")
|
||||
if timeout == -1:
|
||||
s.connect(r.hostname, port)
|
||||
else:
|
||||
s.connect(r.hostname, port, timeout)
|
||||
|
||||
s.send(connectHeaders)
|
||||
let connectResult = parseResponse(s, false, timeout)
|
||||
if not connectResult.status.startsWith("200"):
|
||||
raise newException(HttpRequestError,
|
||||
"The proxy server rejected a CONNECT request, " &
|
||||
"so a secure connection could not be established.")
|
||||
sslContext.wrapConnectedSocket(s, handshakeAsClient)
|
||||
s.send(connectHeaders)
|
||||
let connectResult = parseResponse(s, false, timeout)
|
||||
if not connectResult.status.startsWith("200"):
|
||||
raise newException(HttpRequestError,
|
||||
"The proxy server rejected a CONNECT request, " &
|
||||
"so a secure connection could not be established.")
|
||||
sslContext.wrapConnectedSocket(s, handshakeAsClient)
|
||||
else:
|
||||
raise newException(HttpRequestError, "SSL support not available. Cannot connect via proxy over SSL")
|
||||
else:
|
||||
if timeout == -1:
|
||||
s.connect(r.hostname, port)
|
||||
|
||||
Reference in New Issue
Block a user