diff options
Diffstat (limited to 'lib/yahns/openssl_server.rb')
-rw-r--r-- | lib/yahns/openssl_server.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/yahns/openssl_server.rb b/lib/yahns/openssl_server.rb new file mode 100644 index 0000000..3940892 --- /dev/null +++ b/lib/yahns/openssl_server.rb @@ -0,0 +1,21 @@ +# Copyright (C) 2014, all contributors <yahns-public@yhbt.net> +# License: GPLv3 or later (see COPYING for details) + +require_relative 'acceptor' +require_relative 'openssl_client' + +class Yahns::OpenSSLServer < Kgio::TCPServer # :nodoc: + include Yahns::Acceptor + + def self.wrap(fd, ssl_ctx) + srv = for_fd(fd) + srv.instance_variable_set(:@ssl_ctx, ssl_ctx) + srv + end + + def kgio_accept(klass, flags) + io = super + io.yahns_init_ssl(@ssl_ctx) + io + end +end |