From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use 5.020;
use UE;
require POSIX;
use Net::SSLeay ();
#my $t = PE::Timer->new; $t->start(2); $t->callback(sub {
my $ctx = Net::SSLeay::CTX_new;
Net::SSLeay::CTX_use_certificate_file($ctx, 't/cert/cert.pem', Net::SSLeay::FILETYPE_PEM());
Net::SSLeay::CTX_use_RSAPrivateKey_file($ctx, 't/cert/key.pem', Net::SSLeay::FILETYPE_PEM());
#Net::SSLeay::SSL_CTX_set_options($ctx, Net::SSLeay::SSL_OP_NO_RENEGOTIATION());
$SIG{PIPE} = 'IGNORE';
$0 = 'jsrc';
my ($foo, @foo);
my $t = UniEvent::Timer->new; $t->start(0.2); $t->callback(sub {
$_->reset for (splice @foo);
do {my$foo=$_, $_->write("shit", sub {undef $foo}), $_->reset} for (splice @foo);
});
warn $$;
my $sock = UE::Tcp->new;
$sock->use_ssl($ctx);
$sock->bind('*', 6669);
$sock->listen(sub {
my (undef, $cli) = @_;
push @foo, $cli;
=cut
$cli->write("shit", sub {
shift->write("shit", sub {
shift->reset;
undef $cli;
#shift->write("shit");
});
});
=cut
$cli->write("shit", sub{
$cli->write("jopa", sub {
#warn "@_";
$cli->reset;
});
# $cli->reset;
#undef $cli;
});
return;
$cli->write("shit", sub {
$cli->write("shit", sub {
$cli->reset;
undef $cli;
});
});
=cut
$cli->read_start;
$cli->read_callback(sub {
$foo = !$foo;
#$cli->write("HTTP/1.0 301 Moved Permanently\r\nLocation: http://93.159.239.44:6666/\r\nConnection: close\r\n\r\n") if $foo;
$cli->write("HTTP/1.0 301 Moved Permanently\r\nLocation: http://dev.crazypanda.ru:6666/\r\nConnection: close\r\n\r\n");
#$cli->write("HTTP/1.0 302 Found\r\nLocation: http://ya.ru/\r\nConnection: close\r\n\r\n");
$cli->shutdown;
$cli->disconnect;
undef $cli;
#use Devel::Peek ; Dump $_[0];
# use DDP; p \@_; 1
});
=cut
=cut
$cli->write("OK");
my $t = UniEvent::Timer->new; $t->start(1); $t->callback(sub {
undef $t;
$cli->reset;
# $cli->shutdown;
# $cli->disconnect;
# undef $cli;
});
=cut
} => 666);
UE::Loop->default->run;