Mercurial > prosody-hg
comparison net/server.lua @ 850:edbd0d1fce93
net.server: Don't retry if client closes socket during SSL handshaking
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 01 Mar 2009 23:33:41 +0000 |
| parents | 77244ba297ac |
| children | 57057f2cbecb |
comparison
equal
deleted
inserted
replaced
| 849:5049b4512df0 | 850:edbd0d1fce93 |
|---|---|
| 487 _sendlistlen = ( wrote and removesocket( _sendlist, socket, _sendlistlen ) ) or _sendlistlen | 487 _sendlistlen = ( wrote and removesocket( _sendlist, socket, _sendlistlen ) ) or _sendlistlen |
| 488 _readlistlen = ( read and removesocket( _readlist, socket, _readlistlen ) ) or _readlistlen | 488 _readlistlen = ( read and removesocket( _readlist, socket, _readlistlen ) ) or _readlistlen |
| 489 read, wrote = nil, nil | 489 read, wrote = nil, nil |
| 490 _, err = client:dohandshake( ) | 490 _, err = client:dohandshake( ) |
| 491 if not err then | 491 if not err then |
| 492 --out_put( "server.lua: ssl handshake done" ) | 492 out_put( "server.lua: ssl handshake done" ) |
| 493 handler.readbuffer = _readbuffer -- when handshake is done, replace the handshake function with regular functions | 493 handler.readbuffer = _readbuffer -- when handshake is done, replace the handshake function with regular functions |
| 494 handler.sendbuffer = _sendbuffer | 494 handler.sendbuffer = _sendbuffer |
| 495 -- return dispatch( handler ) | 495 -- return dispatch( handler ) |
| 496 return true | 496 return true |
| 497 else | 497 else |
| 502 wrote = true | 502 wrote = true |
| 503 elseif err == "wantread" and not read then | 503 elseif err == "wantread" and not read then |
| 504 _readlistlen = _readlistlen + 1 | 504 _readlistlen = _readlistlen + 1 |
| 505 _readlist [ _readlistlen ] = client | 505 _readlist [ _readlistlen ] = client |
| 506 read = true | 506 read = true |
| 507 else | |
| 508 break; | |
| 507 end | 509 end |
| 508 --coroutine_yield( handler, nil, err ) -- handshake not finished | 510 --coroutine_yield( handler, nil, err ) -- handshake not finished |
| 509 coroutine_yield( ) | 511 coroutine_yield( ) |
| 510 end | 512 end |
| 511 end | 513 end |
| 512 disconnect( handler, "max handshake attemps exceeded" ) | 514 disconnect( handler, "ssl handshake failed" ) |
| 513 handler.close( true ) -- forced disconnect | 515 handler.close( true ) -- forced disconnect |
| 514 return false -- handshake failed | 516 return false -- handshake failed |
| 515 end | 517 end |
| 516 ) | 518 ) |
| 517 if startssl then -- ssl now? | 519 if startssl then -- ssl now? |
