Software /
code /
prosody
Comparison
net/server_epoll.lua @ 9933:aac4c55721f9
Merge 0.11->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 28 Mar 2019 17:28:20 +0100 |
parent | 9855:6c2370f17027 |
parent | 9932:df73ca804719 |
child | 9995:8d46ecc4bd0c |
comparison
equal
deleted
inserted
replaced
9930:12a31296d63d | 9933:aac4c55721f9 |
---|---|
338 local data, err, partial = self.conn:receive(self.read_size or cfg.read_size); | 338 local data, err, partial = self.conn:receive(self.read_size or cfg.read_size); |
339 if data then | 339 if data then |
340 self:onconnect(); | 340 self:onconnect(); |
341 self:on("incoming", data); | 341 self:on("incoming", data); |
342 else | 342 else |
343 if err == "wantread" then | |
344 self:set(true, nil); | |
345 err = "timeout"; | |
346 elseif err == "wantwrite" then | |
347 self:set(nil, true); | |
348 err = "timeout"; | |
349 end | |
343 if partial and partial ~= "" then | 350 if partial and partial ~= "" then |
344 self:onconnect(); | 351 self:onconnect(); |
345 self:on("incoming", partial, err); | 352 self:on("incoming", partial, err); |
346 end | 353 end |
347 if err == "wantread" then | 354 if err ~= "timeout" then |
348 self:set(true, nil); | |
349 elseif err == "wantwrite" then | |
350 self:set(nil, true); | |
351 elseif err ~= "timeout" then | |
352 self:on("disconnect", err); | 355 self:on("disconnect", err); |
353 self:destroy() | 356 self:destroy() |
354 return; | 357 return; |
355 end | 358 end |
356 end | 359 end |
357 if not self.conn then return; end | 360 if not self.conn then return; end |
358 if self.conn:dirty() then | 361 if self._wantread and self.conn:dirty() then |
359 self:setreadtimeout(false); | 362 self:setreadtimeout(false); |
360 self:pausefor(cfg.read_retry_delay); | 363 self:pausefor(cfg.read_retry_delay); |
361 else | 364 else |
362 self:setreadtimeout(); | 365 self:setreadtimeout(); |
363 end | 366 end |