Skip to content

Commit

Permalink
perf: Reduce the memory usage
Browse files Browse the repository at this point in the history
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
  • Loading branch information
zhaojh329 committed Apr 26, 2024
1 parent b058b52 commit dc05a39
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 29 deletions.
54 changes: 27 additions & 27 deletions http/client.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
-- SPDX-License-Identifier: MIT
-- Author: Jianhui Zhao <zhaojh329@gmail.com>

local base64 = require 'eco.encoding.base64'
local socket = require 'eco.socket'
local URL = require 'eco.http.url'
local file = require 'eco.file'
local ssl = require 'eco.ssl'
local dns = require 'eco.dns'

local concat = table.concat
local tonumber = tonumber
Expand Down Expand Up @@ -354,6 +351,7 @@ function methods:request(method, url, body, opts)
rand(256) - 1, rand(256) - 1, rand(256) - 1,
rand(256) - 1)

local base64 = require 'eco.encoding.base64'
headers['sec-websocket-key'] = base64.encode(bytes)
end

Expand All @@ -375,46 +373,48 @@ function methods:request(method, url, body, opts)
headers[k:lower()] = v
end

local answers, err = dns.query(host, {
type = opts.ipv6 and dns.TYPE_AAAA or dns.TYPE_A,
mark = opts.mark,
device = opts.device,
nameservers = opts.nameservers
})
if not answers then
return nil, 'resolve "' .. host .. '" fail: ' .. err
end

local addresses = {}

for _, a in ipairs(answers) do
if a.type == dns.TYPE_A or a.type == dns.TYPE_AAAA then
addresses[#addresses + 1] = a
if socket.is_ip_address(host) then
addresses[1] = host
else
local dns = require 'eco.dns'
local answers, err = dns.query(host, {
type = opts.ipv6 and dns.TYPE_AAAA or dns.TYPE_A,
mark = opts.mark,
device = opts.device,
nameservers = opts.nameservers
})
if not answers then
return nil, 'resolve "' .. host .. '" fail: ' .. err
end

for _, a in ipairs(answers) do
if a.type == dns.TYPE_A or a.type == dns.TYPE_AAAA then
addresses[#addresses + 1] = a.address
end
end
end

if #addresses < 1 then
return nil, 'resolve "' .. host .. '" fail: not found'
if #addresses < 1 then
return nil, 'resolve "' .. host .. '" fail: not found'
end
end

local sock

for _, a in ipairs(addresses) do
for _, address in ipairs(addresses) do
if scheme_info.use_ssl then
sock, err = ssl.connect(a.address, port, opts)
local ssl = require 'eco.ssl'
sock, err = ssl.connect(address, port, opts)
else
sock, err = socket.connect_tcp(a.address, port, opts)
sock, err = socket.connect_tcp(address, port, opts)
end

if sock then
break
end

if a.type == dns.TYPE_A then
err = string.format('connect "%s:%d" fail: ', a.address, port) .. err
else
err = string.format('connect "[%s]:%d" fail: ', a.address, port) .. err
end
err = string.format('connect "%s %d" fail: ', address, port) .. err
end

if not sock then
Expand Down
2 changes: 1 addition & 1 deletion http/server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
local file = require 'eco.core.file'
local socket = require 'eco.socket'
local url = require 'eco.http.url'
local ssl = require 'eco.ssl'
local log = require 'eco.log'

local str_lower = string.lower
Expand Down Expand Up @@ -782,6 +781,7 @@ function M.listen(ipaddr, port, options, handler)
local sock, err

if options.cert and options.key then
local ssl = require 'eco.ssl'
options.ssl = true
sock, err = ssl.listen(ipaddr, port, options)
else
Expand Down
2 changes: 1 addition & 1 deletion mqtt.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

local socket = require 'eco.socket'
local time = require 'eco.time'
local ssl = require 'eco.ssl'

local str_char = string.char
local str_byte = string.byte
Expand Down Expand Up @@ -409,6 +408,7 @@ local function mqtt_connect(self)
local sock, err

if opts.ssl then
local ssl = require 'eco.ssl'
sock, err = ssl.connect(ipaddr, opts.port or 8883, opts)
else
sock, err = socket.connect_tcp(ipaddr, opts.port or 1883, opts)
Expand Down

0 comments on commit dc05a39

Please sign in to comment.