Greetings,

During the course of writing a tutorial I've been noticing discrepancies
between POE::Component::Server::TCP's documentation and code.  I have
filed some initial tickets:

    http://rt.cpan.org/Ticket/Display.html?id=47855
    http://rt.cpan.org/Ticket/Display.html?id=47854
    http://rt.cpan.org/Ticket/Display.html?id=47853
    http://rt.cpan.org/Ticket/Display.html?id=47852

Most are pretty straightforward.  However, 47855 requires a bit of
discussion.

The problem is that the ClientConnected callback does not actually
receive a socket in ARG0.  ARG0 has been spliced off in the
POE::Wheel::ReadWrite constructor, so ARG0 is actually the ClientArgs
parameter.  This change was implemented nearly 4 years ago (to fix a
leaking socket problem), so anything that actually uses ARG0 will break
if the code is changed to match the documentation.

How should the code be changed?  Should it be made conservatively, so
that any code relying on ARG0 being ClientArgs continues to work?
Should it be fixed to match the documentation?

One advantage of out and out breaking old code  is that ClientArgs could
actually be flattened into ARG1..$#_.  Right now it's a little awkward
and confusing that ClientArgs is required to be an arrayref, yet nothing
in POE::Component::Server::TCP is actually using it as one.

--
Michael Fowler
www.shoebox.net

Reply via email to