From 7ed89c97f760600df238f9853ee453570935870f Mon Sep 17 00:00:00 2001 From: Diego Nehab Date: Fri, 18 Jun 2004 21:41:44 +0000 Subject: [PATCH] 2.0 alpha RELEASED! --- NEW | 2 +- TODO | 157 +----------------- etc/README | 20 +-- etc/lp.lua | 402 ++++++++++++++++++++++++++++++++++++++++++++++ makefile.dist | 6 +- samples/README | 7 +- src/except.c | 23 ++- src/ftp.lua | 16 +- src/http.lua | 23 ++- src/smtp.lua | 7 +- src/socket.lua | 2 + src/tp.lua | 49 +++--- test/httptest.lua | 9 +- test/testsrvr.lua | 1 - 14 files changed, 480 insertions(+), 244 deletions(-) create mode 100644 etc/lp.lua diff --git a/NEW b/NEW index 035aab7..302974e 100644 --- a/NEW +++ b/NEW @@ -56,7 +56,7 @@ the changes that made it into version 2.0: LUASOCKET_DEBUG was defined, but it turns out they might be useful for applications; -<> 'socket.try' and 'socket.protect' provide a simple +<> 'socket.newtry' and 'socket.protect' provide a simple interface to exceptions that proved very in the implementation of high-level modules; diff --git a/TODO b/TODO index 7a45569..054e5f3 100644 --- a/TODO +++ b/TODO @@ -1,163 +1,12 @@ - - -ajeitar os README.* -ajeitar as referencias a RFCS e LTNS em todos os arquivos. - -make sure sockets are closed when exceptions are raised - -check garbage collection in test*.lua - - -manual - socket.newtry - *socket.skip - *send return convention changed. - * compatibility: select sets are associative - * add socket.connect and socket.bind to the manual - * add shutdown - * add gethostname - check all occurences of it's - * the need of a content-length header in the post method... - * notice the change in callback conventions - * the callback.lua module and the new mime module. - * escape and unescape in url, not in code! - * add timeout and proxy to request table - * change stay to redirect - * socket.time and socket.sleep - * - connect with timeout - local connect - * add thanks to 'carlos cassino' and 'david burgess' - * add new ip- options and reuseaddr option - * - add listen to manual - * bind method doesn't do listen anymore - * bind doesn't turn an object into a server object: listen does. - -tests - checar todos os metodos - checar todas as globais - checar garbage collection - check for interrupts - -wrp can't break lines in the middle of a line break. - -add comments into each C module. -testar os options! - - -Read about -250-ENHANCEDSTATUSCODES -250-PIPELINING -250-8BITMIME -250-SIZE -250-DSN -250-ETRN -250-AUTH GSSAPI -250-DELIVERBY -250 HELP - -Change return of send and receive callbacks to allow for -new functions. "" signals end of transmission. Pass total -number of bytes in request table for HTTP. Callback has nothing -to do with it. - -Make sure nobody can fuck up with the metatables... - - - -Adjust dates in all files - -Test the library on every system possible - +make select interrupt safe +adicionar exemplos de expansão: pipe, local, named pipe Add service name translation. -Ajeitar o protocolo da luaopen_socket()... sei lá qual é. - - -- adicionar exemplos de expansão: pipe, local, named pipe - - +testar os options! - Fazer compilar com g++ - Thread-safe - proteger get*by*.* com um mutex GLOBAL! - proteger ou atomizar o conjunto (timedout, receive), (timedout, send) - inet_ntoa também é uma merda. - SSL - - unix 92 bytes maximo no endereço, incluindo o zero - unix 9216 maximo de datagram size - --------------- -these are done --------------- - -* tirar socket.url socket.ftp etc do manual. agora os namespaces - estao liberados. -* falar sobre o novo esquema de namespace -* ajeitar o manual sobre select, mais liberal agora -* make sure filter.chain fails gracefully. -* ajeitar select. upvalue nao tem nada a ver... -* should be interrupt-safe -* notice the change in callback conventions -* new mime module replacing old code module (faster, more functionality) -* new socket options (many) -* only allocate in case of success -* optimize for success (only call select if fails) -* add proxy support to http -* add gethostname -* local connect -* connect with timeout -* change code to mime -* change stay to redirect -* add shutdown -* change send/recv to avoid using select -* O location do "redirect" pode ser relativo ao servidor atual (não pode, - mas os servidores fazem merda...) -* Ajeitar para Lua 5.0 -* Padronizar os retornos de funccao -* Separar as classes em arquivos -* Retorno de sendto em datagram sockets pode ser refused -* select sets are now associative -* colocar pump.all, pump.step -* mudar ltn12.html e usar o exemplo source.cat que está muito melhor. -* break smtp.send into c = smtp.open, c:send() c:close() -* fazer com que a socket.source e socket.sink sejam "selectable". -* change mime.eol to output marker on detection of first candidate, instead - of on the second. that way it works in one pass for strings that end with - one candidate. -* unify backbone of smtp and ftp -* unify filter and send/receive callback. new sink/source/pump idea. -* get rid of aux_optlstring -* get rid of unpack in mime.lua -* create socket.(sink|source).simplify -* break chain into a simpler binary chain and a complex (recursive) one. -* Create a passive mode option for the FTP (good for firewall). -* Modules should return their namespace table in the end of the chunk. -* get.lua precisa de ftp.get com url e sink -* conjunto associativo -* colocar um userdata com gc metamethod pra chamar sock_close (WSAClose); -* call select before accept, not after, dumbass! -* get rid of setnonblocking/setblocking in the bind function -* close has to block... -* fmt is not a good name -* change wrap() to accept a number and default to "character" -* move gethostname to dns table -* get rid of _cb in name of functions? -* trust character constants in mime.c? yup. -* smtp.lua needs stuff filter -* new option.c module to put all options (TCP and UDP share...)? -* add _tostring methods! -* change all modules to use the new namespace scheme -* write some utilities that use the code.lua module and put them -* in etc, modify the README.etc file and makefile.dist (eol.lua is done) -* proxy no ftp? no -* ajeitar < e-mail > no smtp? no -* ajeitar referencias a LTN12 nos manuais -* RECEIVE MUDOU!!! (partial stuff) COLOCAR NO MANUAL. -* HTTP.lua mudou bastante também. -* falar sobre encodet/wrapt/decodet no manual sobre mime? no. -* pump.step usado em todo mundo que recebe source ou sink -* sources ans sinks are always simple in http and ftp and smtp -* expose encode/decode tables to provide extensibility for mime module -* use coroutines instead of fancy filters -* add socket.TIMEOUT to be default timeout? no. -* use gethostname it in SMTP -* smtp.o goes to mime.dll diff --git a/etc/README b/etc/README index d650843..c459a46 100644 --- a/etc/README +++ b/etc/README @@ -1,24 +1,10 @@ This directory contains code that is more useful than the examples. This code *is* supported. - lua.lua + lua.lua -- new require and requirelib implementations -These are modules to suport dynamic loading of LuaSocket by the stand alone -Lua Interpreter with the use of new "require" and "requirelib" functions. -For my Mac OS X box, for instance, I place all files in -/Users/diego/tec/luasocket and set the following environment variables: - - LUA_INIT=@/Users/diego/tec/luasocket/lua.lua - LUA_PATH=/Users/diego/tec/luasocket/?.lua;?.lua - LUA_PATHLIB=/Users/diego/tec/luasocket/?.dylib;?.dylib - -With that, I can run any luasocket application with the command line: - - lua