Software /
code /
prosody
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 |
parent | 2731:373a7c960409 |
child | 2939: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 ) |