Mercurial > prosody-hg
comparison net/server_select.lua @ 2740:2442c54cf9ec
net.server_select: Fix for traceback when a read returns an error and no data (thanks dersd)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 05 Mar 2010 16:45:46 +0000 |
| parents | dabdc56561f9 |
| children | 692b3c6c5bd2 6ccaefea80ec |
comparison
equal
deleted
inserted
replaced
| 2739:7339c2720b39 | 2740:2442c54cf9ec |
|---|---|
| 428 end | 428 end |
| 429 return noread, nosend | 429 return noread, nosend |
| 430 end | 430 end |
| 431 local _readbuffer = function( ) -- this function reads data | 431 local _readbuffer = function( ) -- this function reads data |
| 432 local buffer, err, part = receive( socket, pattern ) -- receive buffer with "pattern" | 432 local buffer, err, part = receive( socket, pattern ) -- receive buffer with "pattern" |
| 433 if not err or (err == "wantread" or err == "timeout") or string_len(part) > 0 then -- received something | 433 if not err or (err == "wantread" or err == "timeout") or (part and string_len(part) > 0) then -- received something |
| 434 local buffer = buffer or part or "" | 434 local buffer = buffer or part or "" |
| 435 local len = string_len( buffer ) | 435 local len = string_len( buffer ) |
| 436 if len > maxreadlen then | 436 if len > maxreadlen then |
| 437 disconnect( handler, "receive buffer exceeded" ) | 437 disconnect( handler, "receive buffer exceeded" ) |
| 438 handler:close( true ) | 438 handler:close( true ) |
