499 local wrote, read |
499 local wrote, read |
500 |
500 |
501 handler.starttls = function (now) |
501 handler.starttls = function (now) |
502 if not now then out_put("server.lua: we need to do tls, but delaying until later"); handler.need_tls = true; return; end |
502 if not now then out_put("server.lua: we need to do tls, but delaying until later"); handler.need_tls = true; return; end |
503 out_put( "server.lua: attempting to start tls on "..tostring(socket) ) |
503 out_put( "server.lua: attempting to start tls on "..tostring(socket) ) |
504 local oldsocket = socket; |
|
505 socket, err = ssl_wrap( socket, sslctx ) -- wrap socket |
504 socket, err = ssl_wrap( socket, sslctx ) -- wrap socket |
506 out_put("sslwrapped socket is "..tostring(socket)); |
505 out_put("sslwrapped socket is "..tostring(socket)); |
507 if err then |
506 if err then |
508 out_put( "server.lua: ssl error: ", err ) |
507 out_put( "server.lua: ssl error: ", err ) |
509 return nil, nil, err -- fatal error |
508 return nil, nil, err -- fatal error |
510 end |
509 end |
511 socket:settimeout(0); |
510 socket:settimeout( 1 ) |
512 |
|
513 -- Add the new socket to our system |
|
514 socketlist[ socket ] = handler |
|
515 readlen = readlen + 1 |
|
516 readlist[ readlen ] = socket |
|
517 |
|
518 -- Remove traces of the old socket |
|
519 readlen = removesocket( readlist, oldsocket, readlen ) |
|
520 socketlist [ oldsocket ] = nil; |
|
521 |
|
522 send = socket.send |
511 send = socket.send |
523 receive = socket.receive |
512 receive = socket.receive |
524 close = socket.close |
513 close = socket.close |
525 handler.ssl = function( ) |
514 handler.ssl = function( ) |
526 return true |
515 return true |
541 _, err = client:dohandshake( ) |
530 _, err = client:dohandshake( ) |
542 if not err then |
531 if not err then |
543 out_put( "server.lua: ssl handshake done" ) |
532 out_put( "server.lua: ssl handshake done" ) |
544 writelen = ( wrote and removesocket( writelist, socket, writelen ) ) or writelen |
533 writelen = ( wrote and removesocket( writelist, socket, writelen ) ) or writelen |
545 handler.receivedata = handler._receivedata -- when handshake is done, replace the handshake function with regular functions |
534 handler.receivedata = handler._receivedata -- when handshake is done, replace the handshake function with regular functions |
546 handler.dispatchdata = handler._dispatchdata |
535 handler.dispatchdata = handler._dispatchdata; |
547 return true; |
536 return true; |
548 else |
537 else |
549 out_put( "server.lua: error during ssl handshake: ", err ) |
538 out_put( "server.lua: error during ssl handshake: ", err ) |
550 if err == "wantwrite" then |
539 if err == "wantwrite" then |
551 if wrote == nil then |
540 if wrote == nil then |