@@ -7,6 +7,7 @@ use base 'Danga::Socket';
7
7
use fields qw( buffer server handle) ;
8
8
use vars qw( $initial_memory) ;
9
9
10
+ use Devel::Peek ();
10
11
my $has_gladiator = eval " use Devel::Gladiator; 1;" ;
11
12
my $has_cycle = eval " use Devel::Cycle; 1;" ;
12
13
my $has_devel_leak = eval " use Devel::Leak; 1;" ;
@@ -245,6 +246,9 @@ sub arena_ref_counts {
245
246
elsif (ref $it eq " DJabberd::Callback" ) {
246
247
$ct {" DJabberd::Callback-" . $it -> {_phase }}++ if $it -> {_phase };
247
248
}
249
+ elsif (ref $it eq " CODE" ) {
250
+ $ct {Devel::Peek::CvGV($it )}++;
251
+ }
248
252
}
249
253
$all = undef ;
250
254
return \%ct ;
@@ -271,7 +275,6 @@ sub CMD_gladiator {
271
275
next unless $delta ;
272
276
} elsif ($cmd eq " lite" ) {
273
277
next if $k =~ / ^REF-/ ;
274
- next if $k =~ / ^DJabberd::AnonSubFrom::lib_DJabberd_RosterStorage/ ;
275
278
next if $k =~ / log4perl/i ;
276
279
} else {
277
280
next unless $ct -> {$k } > 1 || $cmd eq " all" ;
@@ -292,7 +295,6 @@ sub CMD_cycle {
292
295
}
293
296
294
297
my $array = Devel::Gladiator::walk_arena();
295
- # my @list = grep { ref($_) =~ /^DJabberd::VHost|DJabberd::Connection::ClientIn|DJabberd::AnonSubFrom/ } @$array;
296
298
my @list = grep { ref ($_ ) =~ / ^DJabberd|Gearman|CODE/ } @$array ;
297
299
$array = undef ;
298
300
@@ -376,7 +378,14 @@ sub end {
376
378
sub write {
377
379
my $self = shift ;
378
380
my $string = shift ;
379
- $self -> SUPER::write ($string . " \r\n " );
381
+
382
+ if (defined $string ) {
383
+ $self -> SUPER::write ($string . " \r\n " );
384
+ } else {
385
+ # because event_write by default just kicks off more events, calling
386
+ # write with undef...
387
+ $self -> SUPER::write (undef );
388
+ }
380
389
}
381
390
382
391
sub close {
0 commit comments