lua-users home
lua-l archive

copas and luasec question

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


hello.
i tried to hook up luasocket, copas and luasec by wrapping the socket
connection in ssl before handing it over to copas.
however, i currently run into a problem with the code below: when a
request comes in, the handshake works fine ( i can get the HTTP GET
line from the client, 
but skt:send(response) is not executed until i stop (kill) the
application , i.e. the handler seems to hang just before
skt:send() and the client seems to wait forever.
copas works fine with the same code without ssl.wrap ( it sends the
response immediately) , also ssl works totally fine if i run it single threaded 
without copas.
am i missing something obvious?
--- example:
require "socket"
require "ssl"
require "copas"
params = {
 mode = "server",
 protocol = "sslv23",
 certificate = "./apache.crt",
 key = "./apache.key",
 verify = "none",
 }
local function handler(skt, host, port)
 print(host, port)
 local line, err = skt:receive()
 print(line, err)
 local response = "HTTP/1.1 200/OK\r\nContent-Type: text/html\n\nhello world!\n" 
 skt:send(response)
end
copas.addserver(
 assert(socket.bind("*", 8888)),
 function(skt)
 local host, port = skt:getpeername()
 skt = ssl.wrap(skt, params)
 skt:dohandshake()
 return handler(copas.wrap(skt), host, port)
 end )
copas.loop()

AltStyle によって変換されたページ (->オリジナル) /