Software / code / prosody
Comparison
net/server_epoll.lua @ 11699:1275dad71afd
net.server_epoll: Use only fatal "write" timeout during TLS negotiation
Only real difference between the read and write timeouts is that the
former has a callback that allows the higher levels to keep the
connection alive, while hitting the later is immediately fatal. We want
the later behavior for TLS negotiation.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 16 Jul 2021 17:10:09 +0200 |
| parent | 11698:9a2a98621c73 |
| child | 11700:79d30de13fdb |
comparison
equal
deleted
inserted
replaced
| 11698:9a2a98621c73 | 11699:1275dad71afd |
|---|---|
| 598 self.ondrain = nil; | 598 self.ondrain = nil; |
| 599 end | 599 end |
| 600 self.onwritable = interface.inittls; | 600 self.onwritable = interface.inittls; |
| 601 self.onreadable = interface.inittls; | 601 self.onreadable = interface.inittls; |
| 602 self:set(true, true); | 602 self:set(true, true); |
| 603 self:setreadtimeout(cfg.ssl_handshake_timeout); | 603 self:setreadtimeout(false); |
| 604 self:setwritetimeout(cfg.ssl_handshake_timeout); | 604 self:setwritetimeout(cfg.ssl_handshake_timeout); |
| 605 self:debug("Prepared to start TLS"); | 605 self:debug("Prepared to start TLS"); |
| 606 end | 606 end |
| 607 end | 607 end |
| 608 | 608 |
| 649 self.onwritable = interface.tlshandshake; | 649 self.onwritable = interface.tlshandshake; |
| 650 self.onreadable = interface.tlshandshake; | 650 self.onreadable = interface.tlshandshake; |
| 651 if now then | 651 if now then |
| 652 return self:tlshandshake() | 652 return self:tlshandshake() |
| 653 end | 653 end |
| 654 self:setreadtimeout(cfg.ssl_handshake_timeout); | 654 self:setreadtimeout(false); |
| 655 self:setwritetimeout(cfg.ssl_handshake_timeout); | 655 self:setwritetimeout(cfg.ssl_handshake_timeout); |
| 656 self:set(true, true); | 656 self:set(true, true); |
| 657 end | 657 end |
| 658 | 658 |
| 659 function interface:tlshandshake() | 659 function interface:tlshandshake() |
| 675 self:onconnect(); | 675 self:onconnect(); |
| 676 self:onreadable(); | 676 self:onreadable(); |
| 677 elseif err == "wantread" then | 677 elseif err == "wantread" then |
| 678 self:noise("TLS handshake to wait until readable"); | 678 self:noise("TLS handshake to wait until readable"); |
| 679 self:set(true, false); | 679 self:set(true, false); |
| 680 self:setreadtimeout(cfg.ssl_handshake_timeout); | 680 self:setwritetimeout(cfg.ssl_handshake_timeout); |
| 681 elseif err == "wantwrite" then | 681 elseif err == "wantwrite" then |
| 682 self:noise("TLS handshake to wait until writable"); | 682 self:noise("TLS handshake to wait until writable"); |
| 683 self:set(false, true); | 683 self:set(false, true); |
| 684 self:setwritetimeout(cfg.ssl_handshake_timeout); | 684 self:setwritetimeout(cfg.ssl_handshake_timeout); |
| 685 else | 685 else |