[PATCH] Report stream errors
Jos I. Boumans
jos at dwim.org
Sat Jul 26 23:15:55 UTC 2008
Hi,
this patch addresses a FIXME in the code which silently disconnects
if there's
a namespace mismatch.
r6512 at coke: josboum | 2008-07-27 01:07:51 +0200
* log stream errors clearly and don't just silently disconnect
* this addresses a FIXME
--- DJabberd/lib/DJabberd/Connection/ServerIn.pm (revision 778)
+++ DJabberd/lib/DJabberd/Connection/ServerIn.pm (patch
djabberd-streamerror-diagnostics level 1)
@@ -22,8 +22,16 @@
sub on_stream_start {
my ($self, $ss) = @_;
$self->{in_stream} = 1;
- return $self->close unless $ss->xmlns eq $self->namespace; #
FIXME: should be stream error
+ ### namespace mismatch is a streamerror
+ unless( $ss->xmlns eq $self->namespace ) {
+ $self->stream_error(
+ sprintf "namespace mismatch: client->%s server->%s",
+ $ss->xmlns, $self->namespace
+ );
+ $self->close;
+ }
+
if ($ss->announced_dialback) {
$self->{announced_dialback} = 1;
$self->start_stream_back($ss,
While in the process of improving diagnostics, i made the below
change, which
makes the anonymous sub show up by name in a stacktrace, rather than
DJabberd::__ANON__:
r6511 at coke: josboum | 2008-07-27 00:22:59 +0200
* improve diagnostics when using the accept handler
--- DJabberd/lib/DJabberd.pm (revision 778)
+++ DJabberd/lib/DJabberd.pm (patch djabberd-streamerror-
diagnostics level 1)
@@ -335,6 +335,8 @@
IO::Handle::blocking($server, 0);
my $accept_handler = sub {
+ local *__ANON__ = " Accept handler in ". __FILE__ ." on line
". __LINE__;
+
my $csock = $server->accept;
return unless $csock;
--
Jos
Boumans
http://www.linkedin.com/in/josboumans
How do I prove I'm not crazy to people who are?
More information about the Djabberd
mailing list