Software / code / prosody
Comparison
net/server_select.lua @ 5531:483f795f6f99
net.server*: Allow the TCP backlog parameter to be set in the config
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 27 Apr 2013 22:46:01 +0200 |
| parent | 5492:5d0cc5de5c51 |
| child | 5548:c5d1c35c93f4 |
comparison
equal
deleted
inserted
replaced
| 5530:d83482fc4a81 | 5531:483f795f6f99 |
|---|---|
| 99 local _sendtraffic | 99 local _sendtraffic |
| 100 local _readtraffic | 100 local _readtraffic |
| 101 | 101 |
| 102 local _selecttimeout | 102 local _selecttimeout |
| 103 local _sleeptime | 103 local _sleeptime |
| 104 local _tcpbacklog | |
| 104 | 105 |
| 105 local _starttime | 106 local _starttime |
| 106 local _currenttime | 107 local _currenttime |
| 107 | 108 |
| 108 local _maxsendlen | 109 local _maxsendlen |
| 137 _sendtraffic = 0 -- some stats | 138 _sendtraffic = 0 -- some stats |
| 138 _readtraffic = 0 | 139 _readtraffic = 0 |
| 139 | 140 |
| 140 _selecttimeout = 1 -- timeout of socket.select | 141 _selecttimeout = 1 -- timeout of socket.select |
| 141 _sleeptime = 0 -- time to wait at the end of every loop | 142 _sleeptime = 0 -- time to wait at the end of every loop |
| 143 _tcpbacklog = 128 -- some kind of hint to the OS | |
| 142 | 144 |
| 143 _maxsendlen = 51000 * 1024 -- max len of send buffer | 145 _maxsendlen = 51000 * 1024 -- max len of send buffer |
| 144 _maxreadlen = 25000 * 1024 -- max len of read buffer | 146 _maxreadlen = 25000 * 1024 -- max len of read buffer |
| 145 | 147 |
| 146 _checkinterval = 1200000 -- interval in secs to check idle clients | 148 _checkinterval = 1200000 -- interval in secs to check idle clients |
| 209 end | 211 end |
| 210 end | 212 end |
| 211 handler.resume = function( ) | 213 handler.resume = function( ) |
| 212 if handler.paused then | 214 if handler.paused then |
| 213 if not socket then | 215 if not socket then |
| 214 socket = socket_bind( ip, serverport ); | 216 socket = socket_bind( ip, serverport, _tcpbacklog ); |
| 215 socket:settimeout( 0 ) | 217 socket:settimeout( 0 ) |
| 216 end | 218 end |
| 217 _readlistlen = addsocket(_readlist, socket, _readlistlen) | 219 _readlistlen = addsocket(_readlist, socket, _readlistlen) |
| 218 _socketlist[ socket ] = handler | 220 _socketlist[ socket ] = handler |
| 219 handler.paused = false; | 221 handler.paused = false; |
| 718 if err then | 720 if err then |
| 719 out_error( "server.lua, [", addr, "]:", port, ": ", err ) | 721 out_error( "server.lua, [", addr, "]:", port, ": ", err ) |
| 720 return nil, err | 722 return nil, err |
| 721 end | 723 end |
| 722 addr = addr or "*" | 724 addr = addr or "*" |
| 723 local server, err = socket_bind( addr, port ) | 725 local server, err = socket_bind( addr, port, _tcpbacklog ) |
| 724 if err then | 726 if err then |
| 725 out_error( "server.lua, [", addr, "]:", port, ": ", err ) | 727 out_error( "server.lua, [", addr, "]:", port, ": ", err ) |
| 726 return nil, err | 728 return nil, err |
| 727 end | 729 end |
| 728 local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx ) -- wrap new server socket | 730 local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx ) -- wrap new server socket |
| 770 | 772 |
| 771 getsettings = function( ) | 773 getsettings = function( ) |
| 772 return { | 774 return { |
| 773 select_timeout = _selecttimeout; | 775 select_timeout = _selecttimeout; |
| 774 select_sleep_time = _sleeptime; | 776 select_sleep_time = _sleeptime; |
| 777 tcp_backlog = _tcpbacklog; | |
| 775 max_send_buffer_size = _maxsendlen; | 778 max_send_buffer_size = _maxsendlen; |
| 776 max_receive_buffer_size = _maxreadlen; | 779 max_receive_buffer_size = _maxreadlen; |
| 777 select_idle_check_interval = _checkinterval; | 780 select_idle_check_interval = _checkinterval; |
| 778 send_timeout = _sendtimeout; | 781 send_timeout = _sendtimeout; |
| 779 read_timeout = _readtimeout; | 782 read_timeout = _readtimeout; |
| 790 _selecttimeout = tonumber( new.select_timeout ) or _selecttimeout | 793 _selecttimeout = tonumber( new.select_timeout ) or _selecttimeout |
| 791 _sleeptime = tonumber( new.select_sleep_time ) or _sleeptime | 794 _sleeptime = tonumber( new.select_sleep_time ) or _sleeptime |
| 792 _maxsendlen = tonumber( new.max_send_buffer_size ) or _maxsendlen | 795 _maxsendlen = tonumber( new.max_send_buffer_size ) or _maxsendlen |
| 793 _maxreadlen = tonumber( new.max_receive_buffer_size ) or _maxreadlen | 796 _maxreadlen = tonumber( new.max_receive_buffer_size ) or _maxreadlen |
| 794 _checkinterval = tonumber( new.select_idle_check_interval ) or _checkinterval | 797 _checkinterval = tonumber( new.select_idle_check_interval ) or _checkinterval |
| 798 _tcpbacklog = tonumber( new.tcp_backlog ) or _tcpbacklog | |
| 795 _sendtimeout = tonumber( new.send_timeout ) or _sendtimeout | 799 _sendtimeout = tonumber( new.send_timeout ) or _sendtimeout |
| 796 _readtimeout = tonumber( new.read_timeout ) or _readtimeout | 800 _readtimeout = tonumber( new.read_timeout ) or _readtimeout |
| 797 _maxselectlen = new.max_connections or _maxselectlen | 801 _maxselectlen = new.max_connections or _maxselectlen |
| 798 _maxsslhandshake = new.max_ssl_handshake_roundtrips or _maxsslhandshake | 802 _maxsslhandshake = new.max_ssl_handshake_roundtrips or _maxsslhandshake |
| 799 _maxfd = new.highest_allowed_fd or _maxfd | 803 _maxfd = new.highest_allowed_fd or _maxfd |