* Improve Packet fragmentation
Right now capture process only handle packet IP fragmentation and
TCP segmentation when all parts come ordered. Also, packets being
reassembled are stored in memory until fully assembled (which may
* Improve TCP assembly
We assume a packet is complete when PSH flag is set. In some cases
this is not true and we have multiples SIP messages into what we
consider an assembled packet. It's require to evaluate if a packet
contains a SIP message every time we assemble a new segment.
* Improve long run performance
Right now, sngrep stores a lot of information in memory making it quite
dangerous in long runs. We implemented a dialog limit to avoid being
afraid of leaving an unattended sngrep, but it ended being also used
by internal structures as a max size reference. While the limit is still
a good idea, it will be nice to decouple it from the internals, allowing
even unlimited captures if specified by the user at own risk.
* Improve RTP stream creation
We create new streams from SDP information every time we parse a
SIP message with SDP content and the information doesn't match the
last call stream. This should be improved to also consider the stream
direction, so we compare with the last call stream with the same
direction. This way, we would avoid drawing RTP arrows that have
the same information
* Improve RTCP parsing
Right now only RTCP extended report is parsed and the information
provided in flow panel doesn't seem to be useful. Determine what
information will be interesting to display and parse it properly.
* Remove RTCP stream arrows
RTCP arrows in Call flow doesn't provide useful information. The
RTCP information displayed in the preview panel could be displayed
in the matching RTP arrow.
* Sorting saved pakets
Before creating a pcap, we sort packets by timestamp. When a lot of packets
are handled (especially when RTP is captured) this can take A LOT of time.
We should improve the sorting, allowing the save process to be canceled or
allowing not to sort at all.
* Allow saving HEP/EEP captured packets
To create a full packet from HEP received packets its required to create
the required Ethernet/TCP/UDP headers before dumping to pcap.
Most of the information are part of HEP headers, other (like ethernet mac
addresses) must be filled with dummy information.
* Change panels initialization
Right now, all panels are initializated at the same, because
each panel can only be invoked once (it is not possible to have
two call details panel right now)
* Add horizontal scrolling
It should be nice to be able to scroll horizontaly (with unused
right and left keys) in Call List and Call flow.
* Interface resize
When the terminal size changes, the ui is not properly redraw.
It would be nice to handle KEY_RESIZE event and change all displayed
* Improve colors for white background terminals
The best approach for colors should be use terminal defaults.
Right now, white background terminals must set background dark option
in order to see colors properly. This could be fixed implementing
* Improve compatibility with IPv6
IPv6 packets are captured but IPv6 addresses can be 45 chars
long, so current UI is not ready to display that kind of
* Improve Unicode support
Even when compiling with libncruses wide-character support, we don't
use the special fuctions that provide to write payload into the panels,
making some characters to be displayed incorrectly.
* Update keybinding display in help screen
Most of the panels have a help window that display keybindings, but they
are updated with the last keybiding mapping changes.
* Create a loading dialog or include a Loading percentage in Call List
Add the readed % of bytes from the pcap file next to the (Loading) label in
Call List, or create a new Dialog when opening big pcaps that can be hidden
to continue loading in background.