NAME

Sniffer::Connection::HTTP - Callbacks for a HTTP connection

SYNOPSIS

You shouldn't use this directly but via Sniffer::HTTP which encapsulates most of this.

  my $sniffer = Sniffer::Connection::HTTP->new(
    callbacks => {
      request  => sub { my ($req,$conn) = @_; print $req->uri,"\n" if $req },
      response => sub { my ($res,$req,$conn) = @_; print $res->code,"\n" },
    }
  );

  # retrieve TCP packet in $tcp, for example via Net::Pcap
  my $tcp = sniff_tcp_packet;

  $sniffer->handle_packet($tcp);

TODO

  • Think about pipelined connections. These are not easily massaged into the request/response scheme. Well, maybe they are, with a bit of hidden logic here.

  • Every response accumulates all data in memory instead of giving the user the partial response so it can be written to disk. This should maybe later be improved.

BUGS

The whole module suite has almost no tests.

If you experience problems, please supply me with a complete, relevant packet dump as the included dump-raw.pl creates. Even better, supply me with (failing) tests.

AUTHOR

Max Maischein (corion@cpan.org)

COPYRIGHT

Copyright (C) 2005-2021 Max Maischein. All Rights Reserved.

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.