And now added some working debugging and put back bye.pl so that
it doesn't call Mojo directly.
Simplified the whole thing. Now let's see whether that has a memory leak
if ($self->is_user && -e $fn) {
$self->send_file($fn);
if ($self->is_user && -e $fn) {
$self->send_file($fn);
- Mojo::IOLoop->timer($Msg::disc_waittime, sub{$self->disconnect});
-} else {
- $self->disconnect;
$cnum = 0;
$connect_timeout = 5;
$cnum = 0;
$connect_timeout = 5;
$delqueue{$conn} = $conn; # save this connection until everything is finished
my $sock = $conn->{sock};
if ($sock) {
$delqueue{$conn} = $conn; # save this connection until everything is finished
my $sock = $conn->{sock};
if ($sock) {
-
- # remove me from the active list
- my $call;
- if ($call = $conn->{call}) {
- my $ref = $conns{$call};
- delete $conns{$call} if $ref && $ref == $conn;
+ if ($sock->{buffer}) {
+ my $lth = length $sock->{buffer};
+ Mojo::IOLoop->timer($disc_waittime, sub {
+ dbg("Buffer contained $lth data , coordinated for $disc_waittime secs, now disconnecting $call") if $dbg;
+ _close_it($conn);
+ });
+ } else {
+ dbg("Buffer empty, just close $call") if $dbg;
+ _close_it($conn);
} else {
dbg((ref $conn) . " socket missing on $conn->{call}") if $dbg;
_close_it($conn);
} else {
dbg((ref $conn) . " socket missing on $conn->{call}") if $dbg;
_close_it($conn);