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


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;



  • 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.


The whole module suite has almost no tests.

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


Max Maischein (


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.