samples/wantwrite/client.lua

1
--
2
-- Public domain
3
--
4
require("socket")
5
require("ssl")
6
 
7
local params = {
8
   mode = "client",
9
   protocol = "sslv3",
10
   key = "../certs/clientAkey.pem",
11
   certificate = "../certs/clientA.pem",
12
   cafile = "../certs/rootA.pem",
13
   verify = {"peer", "fail_if_no_peer_cert"},
14
   options = {"all", "no_sslv2"},
15
}
16
 
17
local function wait(peer, err)
18
   if err == "wantread" then
19
      socket.select({peer}, nil)
20
   elseif err == "timeout" or err == "wantwrite" then
21
      socket.select(nil, {peer})
22
   else
23
      peer:close()
24
      os.exit(1)
25
   end
26
end
27
 
28
 
29
local peer = socket.tcp()
30
assert( peer:connect("127.0.0.1", 8888) )
31
 
32
-- [[ SSL wrapper
33
peer = assert( ssl.wrap(peer, params) )
34
assert( peer:dohandshake() )
35
--]]
36
 
37
peer:settimeout(0.3)
38
 
39
local str = "a rose is a rose is a rose is a...\n"
40
while true do
41
   print("Sending...")
42
   local succ, err = peer:send(str)
43
   while succ do
44
      succ, err = peer:send(str)
45
   end
46
   print("Waiting...", err)
47
   wait(peer, err)
48
end
49
peer:close()