0.331 2025/03/05
- fixed memory leak in L7::HTTP::WebSocket
0.330 2018/02/19
- L7::HTTP::Request::InspectChain
  - support for brotli if IO::Uncompress::Brotli is installed
  - better documentation
- Flow: deal with changes to the attached flows from inside an executed method
  (happens together with GuessProtocol)
0.329 2017/11/22
- L4::Tcp::pktin - fix merging of data into next packet if data were not
  handled in the upper layer yet (merging was done with last unhandled packet
  instead of next one).
0.328 2017/06/11
- L7::SMTP - call new_connection from upper flow to initialize it
0.327 2017/05/25
- L7::SMTP - support BDAT command
- L7::HTTP - make it complain about missing content-length in POST again
0.326 2016/07/06
- initial support for SMTP 
  - implemented in L7::SMTP
  - tool to extract mails from SMTP traffic: tools/smtp2mbox.pl
  - no support for BDAT yet (will croak)
- L4::HTTP
  - if request object implements fix_reqhdr/fix_rsphdr method these get
    used in case of invalid request/response headers to fix the headers
  - downgrade unexpected status code 1xx to warning instead of error
- L4::TCP 
  - don't call upper flow with empty packets (unless FIN)
  - merge data into next buffer and retry if no data could be processed by upper
    flow
- escape special characters in debug function

0.325 2015/07/23
- new tool tools/multiflow to extract UDP, TCP streams and HTTP requests as
  pcap. More information in verbose output of httpflow, like ttl and
  referer.
- L4::TCP now propagates TTL from SYN+ACK of server within meta data of new
  connection to next layer
- some fixes for handling IPv6 and invalid IPv4
- httpflow no works with newer Net::Pcap which don't export :functions 
0.324 2015/04/20
- L7::HTTP - include CONNECT in METHODS_WITHOUT_RPBODY
0.323 2015/04/14
- L7::HTTP::Request::InspectChain - call new_request from upper_flow with
  meta data when creating a new request object
0.322 2015/04/14
- L4::TCP - handle case where only part of packet gets ACKed
0.321 2015/04/14
- L7::HTTP::Request::InspectChain - various fixes
0.320 2015/03/07
- L7::HTTP - make sure in_wsdata is called when only data frame header is
  received.
0.319 2015/03/06
- L7::HTTP - defer forwarding of empty request body on upgrade requests until we
  know that the server does not want to upgrade and instead continue with normal
  HTTP. Do not call in_request_body if upgrade succeeded.
0.318 2015/02/25
- L7::HTTP
  - Handle case of eof from server before sending response back in a special
    way: if this is not the first request don't fatal but instead call
    in_response_header with an empty header to signal this totally valid
    server behavior (server might close any time before sending response,
    client must retry).
  - better debugging - debug messages include request-id relative to connection
    and are more conistent
0.317 2015/02/22
- L7::HTTP - move websocket handling to L7::HTTP::WebSocket and implement this
  and other upgrade handling in a more generic way.
0.316 2015/02/21
- L7::HTTP 
  - provide bytes_left and header in frameinfo of in_wsdata/in_wsctl
  - complain again if request header contain information about non-zero body
  -  parse_reqhdr allows to parse header w/o length info if explicitly told
0.315 2015/02/18
- L7::HTTP support for Websockets
- L7::HTTP exportable function parse_reqhdr and parse_rsphdr to parse
  message header
0.314 2015/02/16
- L7::HTTP option header_maxsize for new_connection allows it to configure the
  maximum size of the message headers.
0.313 2015/02/06
- L7::HTTP fixed offset calculation in case of gaps
0.312 2015/01/28
- L7::HTTP fixed handling of some broken input
0.311 2015/01/26
- L7::HTTP
  - allow \x80-\xff in field-name
  - allow gaps for upgraded connections (i.e. calls for in_data)
  - better detection of chunked encoding, that is accept if given together with
    parameters or with further transfer-encodings inside the same field-value
  - expect body data (especially gaps) only with CONNECT once a successful
    response was received.
  - some code refactoring
0.310 2015/01/20
- L7::HTTP 
  - gap_diff, gap_offset, offset behave now as expected in array
    and scalar context. 
  - correctly mark end of body in call of in_request_body
  - fix for handling gaps in response
0.309 2015/01/07
- L7::HTTP - connections can now track where gaps are possible (i.e. body data
  not needed for HTTP analysis itself), see gap_offset, gap_diff.
- L7::HTTP - bugfix for correctly calculating offset with chunked requests
0.308 2015/01/06
- L7::HTTP - fixed typo in METHODS_WITHOUT_RQBODY (use of METHODS_WITHOUT_RPBODY
  instead of METHODS_WITHOUT_RQBODY)
- L7::HTTP - check that content-length is valid number
0.307 2014/12/12
- L7::HTTP - export some functionality for external use
0.306 2014/12/11
- L7::HTTP - fix bug when calling in_junk
0.305 2014/11/12
- Net::Inspect::IP: don't endless-loop if we don't find the expected
  protocol header in the IPv6 headers. Accept ICMPv6 as protocol header.
0.304 2014/07/03
- added IPv6 support for L3::IP
0.303 2013/11/08
- fix L4::TCP for case, where FIN+ACK not only acked FIN but also previous data
- tools/tcpudpflow: add feature to write each flow as single pcap file (needs
  Net::PcapWriter) instead of one file for each direction
0.302 2013/07/23
- L7::HTTP::dump_state will return message if defined wantarray instead of
  writing into debug
0.301 2013/07/05
- L7::HTTP::open_requests can now return (selected) request objects
0.300 2013/07/04
- clearer handling of end-of-body in HTTP for in_response_body, in_request_body calls
0.29 2013/04/09
- L7::HTTP
  - support for 1xx responses
  - support for chunked requests
    INTERFACE CHANGE!! in_chunk_{header,trailer} now specifify direction
    before the data
  - fixes for chunked handling:
    - Transfer-Encoding is compared case insensitive
    - chunked is only enabled if Transfer-Encoding is exactly 'chunked' 
      (ignore case) not 'chunked whatever' etc
    - chunked is only available with version >= 1.1
  - added test 02_l7http
0.28 2013/02/25 
- same as 0.27_1
0.27_1 2013/02/13
- fix documentation errors, thanks to perl[AT]theconrys[DOT]com 
  https://rt.cpan.org/Ticket/Display.html?id=83213
0.27 2013/02/01
- fix deflate decoding in Net::Inspect::L7::HTTP::Request::InspectChain
0.26 2013/02/01
- L7::HTTP - more information for in_(request|response)_header, including
  all fields, url, version and possible junk data from header
- L7::HTTP - call trace/debug only when %TRACE/$DEBUG to get better performance
- L7::HTTP - be more lax when parsing headers, but report invalid data
0.25 2013/01/11
- L7::HTTP - in_(request|response)_header gets additional argument for
  information extracted from the header, especially the calculated
  content-length
0.24 2012/12/03
- since 0.17 Net::Pcap no longer exports pcap_* functions when importing
  ':functions'. Work around by explicitly importing the needed functions.
0.23 2012/11/22
- removed tools/http_inspection_proxy from distribution.
  It is now available as a seperate distribution App::HTTP_Proxy_IMP
0.22 2012/11/22
- enhanced Net::Inspect::Debug with ideas and code from Net::IMP::Debug for
  better integration into other debugging frameworks
0.21 2012/11/20
- update to 0.20 - forgot to include files into MANIFEST
0.20 2012/11/19
- major change on tools/http_inspection_proxy. complete rewrite and support
  Net::IMP content filters added
- small bugfixes and enhancements
0.19 2012/10/1
- put license into Makefile.PL
0.18 2012/06/14
- fixed detach inside Socks::guess_protocol, flow to detach was missing
0.17 2012/06/11
- basic support for gaps in the data stream in L7::HTTP and above.
0.16 2012/06/06
- harmonize behavior of offset method in L7::HTTP
0.15 2012/06/05
- added tool tools/unsocksify-pcap.pl to extract and unsocksify socks4
  connections from one pcap into another
0.14 2012/06/04
- Socks4 encapsulation
  - Net::Inspect::L5::Socks4
  - including autodetect
  - support in httpflow to detect http requests inside socks connections
- bugfixes related to 0.13
0.13 2012/05/30
- L4::TCP: use as time in call of in() the arliest time in the data
- TCP and above: added dir and time to fatal handlers
- L7::HTTP: method offset to get position in stream
0.12 2012/05/25
- option --anon-stats for httpflow to generate statistics useful for benchmarks
- L7::HTTP set meta.time for current request when receiving new request header
  instead of leaving it to start of tcp connection
0.11 2012/03/27
- fix in L7::HTTP no valid data in request header
0.10 2012/03/27
- dummy expire in base flow object
0.09 2012/03/06
- new tools/live-http-headers.pl
0.08 2012/02/28
- fixed Changes, added L4::UDP and rtpxtract and renamed tcpudpflow
  to MANIFEST
0.07 2012/02/27
- added rtpxtract
0.06 2012/02/27 , 0.05 2012/02/27 
- added L4::UDP
- added expire for TCP and UDP connections
- upgraded tcpflow to tcpudpflow
0.04 2012/01/08 
- put Net/Inspect.pm (which just contains documentation for now)
  inside package Net::Inspect
0.03 2011/12/21 
- add HTTP::Request, HTTP::Response and Scalar::Util to prereq
  Thanks to ANDK for reporting
  https://rt.cpan.org/Ticket/Display.html?id=73417
- fixes and enhancements for httpflow
0.02 2011/12/19 
- fix http_inspection_proxy loading of Net::PcapWriter
- make all formatting indent=4 tabstop=8
0.01 2011/12/19 
- initial release with working tcpflow, httpflow and http_inspection_proxy
