diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2006-03-19 21:22:21 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2006-03-19 21:22:21 +0000 |
commit | 93806208c77607146f6f462426e380e732327ed5 (patch) | |
tree | ac0286d21b5d9343ab01afda6bc277e152936065 | |
parent | 09ad4b299c59c3c5c6c442f0ee99f3c9e8dbe8ce (diff) | |
download | luasocket-93806208c77607146f6f462426e380e732327ed5.tar.gz luasocket-93806208c77607146f6f462426e380e732327ed5.tar.bz2 luasocket-93806208c77607146f6f462426e380e732327ed5.zip |
Updates for 2.0.1 on the way.
-rw-r--r-- | TODO | 48 | ||||
-rw-r--r-- | config | 2 | ||||
-rw-r--r-- | etc/dispatch.lua | 21 | ||||
-rw-r--r-- | src/http.lua | 2 | ||||
-rw-r--r-- | test/dicttest.lua | 2 | ||||
-rw-r--r-- | test/testmesg.lua | 13 |
6 files changed, 26 insertions, 62 deletions
@@ -1,25 +1,11 @@ | |||
1 | 1 | ftp send should return server replies? | |
2 | fix unix.c to return just a function | 2 | make sure there are no object files in the distribution tarball |
3 | get rid of setmetatable(, nil) since packages don't need this anymore in | 3 | http handling of 100-continue, see DB patch |
4 | 5.1 | 4 | DB ftp.lua bug. |
5 | 5 | test unix.c to return just a function and works with require"unix" | |
6 | new instalation scheme??? | 6 | get rid of setmetatable(, nil) since packages don't need this anymore in 5.1 |
7 | 7 | compat-5.1 novo | |
8 | test empty socket.select no windows. | 8 | ajeitar pra lua-5.1 |
9 | |||
10 | bug by mathew percival? | ||
11 | |||
12 | test it on Windows!!! | ||
13 | |||
14 | leave code for losers that don't have nanosleep | ||
15 | |||
16 | ftp.send/recv return bytes transfered? | ||
17 | new scheme to choose family/protocol of object to create | ||
18 | change ltn13 to make sure drawbacks are obvious | ||
19 | - check discussion | ||
20 | use mike's "don't set to blocking before closing unless needed" patch? | ||
21 | take a look at DB's smtp patch (add "extra argument" table) | ||
22 | |||
23 | 9 | ||
24 | adicionar exemplos de expansão: pipe, local, named pipe | 10 | adicionar exemplos de expansão: pipe, local, named pipe |
25 | testar os options! | 11 | testar os options! |
@@ -27,21 +13,3 @@ testar os options! | |||
27 | - proteger get*by*.* com um mutex GLOBAL! | 13 | - proteger get*by*.* com um mutex GLOBAL! |
28 | - proteger ou atomizar o conjunto (timedout, receive), (timedout, send) | 14 | - proteger ou atomizar o conjunto (timedout, receive), (timedout, send) |
29 | - inet_ntoa também é uma merda. | 15 | - inet_ntoa também é uma merda. |
30 | |||
31 | * protect doesn't catch errors by error and assert | ||
32 | * BUG NO SET DO TINYIRC!!! SINISTRO. | ||
33 | * _VERSION, _DEBUG, etc. | ||
34 | * talk about new create field in HTTP, FTP and SMTP | ||
35 | * talk about the non-blocking connect in the manual | ||
36 | * think about how to extend http, ftp, smtp to use special send and receive | ||
37 | * functions for non-blocking so they can be used in the context of the | ||
38 | * dispatcher! | ||
39 | * adjust manual for new sock:send returns. | ||
40 | * think about a dispatcher. | ||
41 | * - it creates a server and receives a function that will do the work on | ||
42 | * received connections | ||
43 | * - this function is invoked with the client socket | ||
44 | * - it calls special send and receive functions that yield on timeout | ||
45 | * arranjar um jeito de fazer multipart/alternative | ||
46 | * what the hell does __unload do? | ||
47 | * it's there just in case someone wants to use it. | ||
@@ -21,7 +21,7 @@ LUALIB=-Llua-5.0.2/lib | |||
21 | #------ | 21 | #------ |
22 | # Compat-5.1 directory | 22 | # Compat-5.1 directory |
23 | # | 23 | # |
24 | COMPAT=compat-5.1r4 | 24 | COMPAT=compat-5.1r5 |
25 | 25 | ||
26 | #------ | 26 | #------ |
27 | # Top of your Lua installation | 27 | # Top of your Lua installation |
diff --git a/etc/dispatch.lua b/etc/dispatch.lua index dd76d6d..6f3855e 100644 --- a/etc/dispatch.lua +++ b/etc/dispatch.lua | |||
@@ -5,6 +5,7 @@ | |||
5 | -- RCS ID: $$ | 5 | -- RCS ID: $$ |
6 | ----------------------------------------------------------------------------- | 6 | ----------------------------------------------------------------------------- |
7 | local base = _G | 7 | local base = _G |
8 | local table = require("table") | ||
8 | local socket = require("socket") | 9 | local socket = require("socket") |
9 | local coroutine = require("coroutine") | 10 | local coroutine = require("coroutine") |
10 | module("dispatch") | 11 | module("dispatch") |
@@ -50,7 +51,7 @@ function socket.protect(f) | |||
50 | return function(...) | 51 | return function(...) |
51 | local co = coroutine.create(f) | 52 | local co = coroutine.create(f) |
52 | while true do | 53 | while true do |
53 | local results = {coroutine.resume(co, unpack(arg))} | 54 | local results = {coroutine.resume(co, base.unpack(arg))} |
54 | local status = table.remove(results, 1) | 55 | local status = table.remove(results, 1) |
55 | if not status then | 56 | if not status then |
56 | if type(results[1]) == 'table' then | 57 | if type(results[1]) == 'table' then |
@@ -58,9 +59,9 @@ function socket.protect(f) | |||
58 | else error(results[1]) end | 59 | else error(results[1]) end |
59 | end | 60 | end |
60 | if coroutine.status(co) == "suspended" then | 61 | if coroutine.status(co) == "suspended" then |
61 | arg = {coroutine.yield(unpack(results))} | 62 | arg = {coroutine.yield(base.unpack(results))} |
62 | else | 63 | else |
63 | return unpack(results) | 64 | return base.unpack(results) |
64 | end | 65 | end |
65 | end | 66 | end |
66 | end | 67 | end |
@@ -72,7 +73,7 @@ end | |||
72 | local function newset() | 73 | local function newset() |
73 | local reverse = {} | 74 | local reverse = {} |
74 | local set = {} | 75 | local set = {} |
75 | return setmetatable(set, {__index = { | 76 | return base.setmetatable(set, {__index = { |
76 | insert = function(set, value) | 77 | insert = function(set, value) |
77 | if not reverse[value] then | 78 | if not reverse[value] then |
78 | table.insert(set, value) | 79 | table.insert(set, value) |
@@ -105,7 +106,7 @@ local function cowrap(dispatcher, tcp, error) | |||
105 | local metat = { __index = function(table, key) | 106 | local metat = { __index = function(table, key) |
106 | table[key] = function(...) | 107 | table[key] = function(...) |
107 | arg[1] = tcp | 108 | arg[1] = tcp |
108 | return tcp[key](unpack(arg)) | 109 | return tcp[key](base.unpack(arg)) |
109 | end | 110 | end |
110 | return table[key] | 111 | return table[key] |
111 | end} | 112 | end} |
@@ -202,7 +203,7 @@ local function cowrap(dispatcher, tcp, error) | |||
202 | dispatcher.receiving.cortn[tcp] = nil | 203 | dispatcher.receiving.cortn[tcp] = nil |
203 | return tcp:close() | 204 | return tcp:close() |
204 | end | 205 | end |
205 | return setmetatable(wrap, metat) | 206 | return base.setmetatable(wrap, metat) |
206 | end | 207 | end |
207 | 208 | ||
208 | 209 | ||
@@ -253,17 +254,17 @@ function cometat.__index:step() | |||
253 | self.sending.set, 1) | 254 | self.sending.set, 1) |
254 | -- for all readable connections, resume their cortns and reschedule | 255 | -- for all readable connections, resume their cortns and reschedule |
255 | -- when they yield back to us | 256 | -- when they yield back to us |
256 | for _, tcp in ipairs(readable) do | 257 | for _, tcp in base.ipairs(readable) do |
257 | schedule(wakeup(self.receiving, tcp)) | 258 | schedule(wakeup(self.receiving, tcp)) |
258 | end | 259 | end |
259 | -- for all writable connections, do the same | 260 | -- for all writable connections, do the same |
260 | for _, tcp in ipairs(writable) do | 261 | for _, tcp in base.ipairs(writable) do |
261 | schedule(wakeup(self.sending, tcp)) | 262 | schedule(wakeup(self.sending, tcp)) |
262 | end | 263 | end |
263 | -- politely ask replacement I/O functions in idle cortns to | 264 | -- politely ask replacement I/O functions in idle cortns to |
264 | -- return reporting a timeout | 265 | -- return reporting a timeout |
265 | local now = socket.gettime() | 266 | local now = socket.gettime() |
266 | for tcp, stamp in pairs(self.stamp) do | 267 | for tcp, stamp in base.pairs(self.stamp) do |
267 | if tcp.class == "tcp{client}" and now - stamp > TIMEOUT then | 268 | if tcp.class == "tcp{client}" and now - stamp > TIMEOUT then |
268 | abort(self.sending, tcp) | 269 | abort(self.sending, tcp) |
269 | abort(self.receiving, tcp) | 270 | abort(self.receiving, tcp) |
@@ -296,6 +297,6 @@ function handlert.coroutine() | |||
296 | function dispatcher.tcp() | 297 | function dispatcher.tcp() |
297 | return cowrap(dispatcher, socket.tcp()) | 298 | return cowrap(dispatcher, socket.tcp()) |
298 | end | 299 | end |
299 | return setmetatable(dispatcher, cometat) | 300 | return base.setmetatable(dispatcher, cometat) |
300 | end | 301 | end |
301 | 302 | ||
diff --git a/src/http.lua b/src/http.lua index 081e156..e002a8c 100644 --- a/src/http.lua +++ b/src/http.lua | |||
@@ -268,7 +268,7 @@ function tredirect(reqt, location) | |||
268 | headers = reqt.headers, | 268 | headers = reqt.headers, |
269 | proxy = reqt.proxy, | 269 | proxy = reqt.proxy, |
270 | nredirects = (reqt.nredirects or 0) + 1, | 270 | nredirects = (reqt.nredirects or 0) + 1, |
271 | connect = reqt.connect | 271 | create = reqt.create |
272 | } | 272 | } |
273 | -- pass location header back as a hint we redirected | 273 | -- pass location header back as a hint we redirected |
274 | headers.location = headers.location or location | 274 | headers.location = headers.location or location |
diff --git a/test/dicttest.lua b/test/dicttest.lua index 9ab9c41..a0da2e1 100644 --- a/test/dicttest.lua +++ b/test/dicttest.lua | |||
@@ -1,3 +1,5 @@ | |||
1 | local dict = require"socket.dict" | 1 | local dict = require"socket.dict" |
2 | 2 | ||
3 | print(dict.get("dict://localhost/d:teste")) | ||
4 | |||
3 | for i,v in pairs(dict.get("dict://localhost/d:teste")) do print(v) end | 5 | for i,v in pairs(dict.get("dict://localhost/d:teste")) do print(v) end |
diff --git a/test/testmesg.lua b/test/testmesg.lua index 1dd9a97..5bec026 100644 --- a/test/testmesg.lua +++ b/test/testmesg.lua | |||
@@ -32,13 +32,6 @@ r, e = smtp.send{ | |||
32 | port = 2525 | 32 | port = 2525 |
33 | } | 33 | } |
34 | 34 | ||
35 | |||
36 | os.exit() | ||
37 | |||
38 | |||
39 | |||
40 | |||
41 | |||
42 | -- creates a source to send a message with two parts. The first part is | 35 | -- creates a source to send a message with two parts. The first part is |
43 | -- plain text, the second part is a PNG image, encoded as base64. | 36 | -- plain text, the second part is a PNG image, encoded as base64. |
44 | source = smtp.message{ | 37 | source = smtp.message{ |
@@ -67,13 +60,13 @@ source = smtp.message{ | |||
67 | -- chunks are loaded into memory and translation happens on the fly. | 60 | -- chunks are loaded into memory and translation happens on the fly. |
68 | [2] = { | 61 | [2] = { |
69 | headers = { | 62 | headers = { |
70 | ["content-type"] = 'image/png; name="image.png"', | 63 | ["content-type"] = 'image/png; name="luasocket.png"', |
71 | ["content-disposition"] = 'attachment; filename="image.png"', | 64 | ["content-disposition"] = 'attachment; filename="luasocket.png"', |
72 | ["content-description"] = 'a beautiful image', | 65 | ["content-description"] = 'a beautiful image', |
73 | ["content-transfer-encoding"] = "BASE64" | 66 | ["content-transfer-encoding"] = "BASE64" |
74 | }, | 67 | }, |
75 | body = ltn12.source.chain( | 68 | body = ltn12.source.chain( |
76 | ltn12.source.file(io.open("image.png", "rb")), | 69 | ltn12.source.file(io.open("luasocket.png", "rb")), |
77 | ltn12.filter.chain( | 70 | ltn12.filter.chain( |
78 | mime.encode("base64"), | 71 | mime.encode("base64"), |
79 | mime.wrap() | 72 | mime.wrap() |