Mercurial > prosody-hg
comparison net/server_event.lua @ 2997:6ccaefea80ec
Merge with tip.
| author | Tobias Markmann <tm@ayena.de> |
|---|---|
| date | Fri, 12 Mar 2010 18:41:05 +0100 |
| parents | 373a7c960409 |
| children | dc73cbc69bd5 |
comparison
equal
deleted
inserted
replaced
| 2996:b0515ed4d9d7 | 2997:6ccaefea80ec |
|---|---|
| 541 interface.writebufferlen = interface.writebufferlen - byte | 541 interface.writebufferlen = interface.writebufferlen - byte |
| 542 if "wantread" == err then -- happens only with luasec | 542 if "wantread" == err then -- happens only with luasec |
| 543 local callback = function( ) | 543 local callback = function( ) |
| 544 interface:_close() | 544 interface:_close() |
| 545 interface.eventwritetimeout = nil | 545 interface.eventwritetimeout = nil |
| 546 return evreturn, evtimeout | 546 return -1; |
| 547 end | 547 end |
| 548 interface.eventwritetimeout = addevent( base, nil, EV_TIMEOUT, callback, cfg.WRITE_TIMEOUT ) -- reg a new timeout event | 548 interface.eventwritetimeout = addevent( base, nil, EV_TIMEOUT, callback, cfg.WRITE_TIMEOUT ) -- reg a new timeout event |
| 549 debug( "wantread during write attemp, reg it in readcallback but dont know what really happens next..." ) | 549 debug( "wantread during write attemp, reg it in readcallback but dont know what really happens next..." ) |
| 550 -- hopefully this works with luasec; its simply not possible to use 2 different write events on a socket in luaevent | 550 -- hopefully this works with luasec; its simply not possible to use 2 different write events on a socket in luaevent |
| 551 return -1 | 551 return -1 |
| 669 if interface._connections >= cfg.MAX_CONNECTIONS then | 669 if interface._connections >= cfg.MAX_CONNECTIONS then |
| 670 client:close( ) -- refuse connection | 670 client:close( ) -- refuse connection |
| 671 debug( "maximal connections reached, refuse client connection; accept delay:", delay ) | 671 debug( "maximal connections reached, refuse client connection; accept delay:", delay ) |
| 672 return EV_TIMEOUT, delay -- delay for next accept attemp | 672 return EV_TIMEOUT, delay -- delay for next accept attemp |
| 673 end | 673 end |
| 674 local ip, port = client:getpeername( ) | 674 local client_ip, client_port = client:getpeername( ) |
| 675 interface._connections = interface._connections + 1 -- increase connection count | 675 interface._connections = interface._connections + 1 -- increase connection count |
| 676 local clientinterface = handleclient( client, ip, port, interface, pattern, listener, nil, sslctx ) | 676 local clientinterface = handleclient( client, client_ip, client_port, interface, pattern, listener, nil, sslctx ) |
| 677 --vdebug( "client id:", clientinterface, "startssl:", startssl ) | 677 --vdebug( "client id:", clientinterface, "startssl:", startssl ) |
| 678 if ssl and sslctx then | 678 if ssl and sslctx then |
| 679 clientinterface:starttls(sslctx) | 679 clientinterface:starttls(sslctx) |
| 680 else | 680 else |
| 681 clientinterface:_start_session( clientinterface.onconnect ) | 681 clientinterface:_start_session( clientinterface.onconnect ) |
| 682 end | 682 end |
| 683 debug( "accepted incoming client connection from:", ip, port ) | 683 debug( "accepted incoming client connection from:", client_ip or "<unknown IP>", client_port or "<unknown port>", "to", port or "<unknown port>"); |
| 684 | 684 |
| 685 client, err = server:accept() -- try to accept again | 685 client, err = server:accept() -- try to accept again |
| 686 end | 686 end |
| 687 return EV_READ | 687 return EV_READ |
| 688 end | 688 end |
| 760 if res or ( err == "timeout" ) then | 760 if res or ( err == "timeout" ) then |
| 761 local ip, port = client:getsockname( ) | 761 local ip, port = client:getsockname( ) |
| 762 local server = function( ) | 762 local server = function( ) |
| 763 return nil, "this is a dummy server interface" | 763 return nil, "this is a dummy server interface" |
| 764 end | 764 end |
| 765 local interface = wrapclient( client, ip, serverport, listeners, pattern, sslctx, startssl ) | 765 local interface = wrapclient( client, ip, serverport, listener, pattern, sslctx, startssl ) |
| 766 interface:_start_connection( startssl ) | 766 interface:_start_connection( startssl ) |
| 767 debug( "new connection id:", interface.id ) | 767 debug( "new connection id:", interface.id ) |
| 768 return interface, err | 768 return interface, err |
| 769 else | 769 else |
| 770 debug( "new connection failed:", err ) | 770 debug( "new connection failed:", err ) |
