ToDo List
=========

capture:
    * 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
        never occur).

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

rtp:
    * 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.

pcap:
    * 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.

interface:
     * 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
        panels.

    * 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
        color themes.

    * 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
        addresses

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

