aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_event.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2012-04-29 02:10:55 +0100
committerMatthew Wild <mwild1@gmail.com>2012-04-29 02:10:55 +0100
commitfe228888c0d51612e8b32adc3f9db91b7c6e8ded (patch)
treee78baabff21e9b6fefaeef4a709098ca30b35922 /net/server_event.lua
parent9d04baca862bcad5b49ac4ab0b9c3432321150d3 (diff)
parent1ee9f6e09228b268bf3f5dc985d4ba9026a72666 (diff)
downloadprosody-fe228888c0d51612e8b32adc3f9db91b7c6e8ded.tar.gz
prosody-fe228888c0d51612e8b32adc3f9db91b7c6e8ded.zip
Merge 0.9->trunk
Diffstat (limited to 'net/server_event.lua')
-rw-r--r--net/server_event.lua28
1 files changed, 11 insertions, 17 deletions
diff --git a/net/server_event.lua b/net/server_event.lua
index f4745c34..8d6f5597 100644
--- a/net/server_event.lua
+++ b/net/server_event.lua
@@ -295,7 +295,10 @@ do
end
function interface_mt:resume()
- return self:_lock(self.nointerface, false, self.nowriting);
+ self:_lock(self.nointerface, false, self.nowriting);
+ if not self.eventread then
+ self.eventread = addevent( base, self.conn, EV_READ, self.readcallback, cfg.READ_TIMEOUT ); -- register callback
+ end
end
function interface_mt:counter(c)
@@ -340,24 +343,11 @@ do
return nil, "writebuffer not empty, waiting"
end
else
- debug( "try to close server with id:", self.id, "args:", now )
+ debug( "try to close server with id:", tostring(self.id), "args:", tostring(now) )
self.fatalerror = "server to close"
self:_lock( true )
- local count = 0
- for _, item in ipairs( interfacelist( ) ) do
- if ( item.type ~= "server" ) and ( item._server == self ) then -- client/server match
- if item:close( now ) then -- writebuffer was empty
- count = count + 1
- end
- end
- end
- local timeout = 0 -- dont wait for unfinished writebuffers of clients...
- if not now then
- timeout = cfg.WRITE_TIMEOUT -- ...or wait for it
- end
- self:_close( timeout ) -- add new event to remove the server interface
- debug( "seconds remained until server is closed:", timeout )
- return count -- returns finished clients with empty writebuffer
+ self:_close( 0 ) -- add new event to remove the server interface
+ return true
end
end
@@ -642,6 +632,10 @@ do
return -1
end
end
+ if interface.noreading then
+ interface.eventread = nil;
+ return -1;
+ end
return EV_READ, cfg.READ_TIMEOUT
end
end