• Gerrit Renker's avatar
    [DCCP]: Update comments on precisely which packets can be retransmitted · 08a29e41
    Gerrit Renker authored
    This updates program documentation: spell out precise conditions about
    which packets are eligible for retransmission (which is actually quite
    hard to extract from RFC 4340).
    
    It is based on the following table derived from RFC 4340:
    
    +-----------+---------------------------------+---------------------+
    |   Type    | Retransmit?                     |  Remark             |
    +-----------+---------------------------------+---------------------+
    | Request   |  in client-REQUEST state        | sec. 8.1.1          |
    | Response  |  NEVER                          | SHOULD NOT, 8.1.3   |
    | Data      |  NEVER                          | unreliable protocol |
    | Ack       |  possible in client-PARTOPEN    | sec. 8.1.5          |
    | DataAck   |  NEVER                          | unreliable protocol |
    | CloseReq  |  only in server-CLOSEREQ state  | MUST, sec. 8.3      |
    | Close     |  in node-CLOSING state          | MUST, sec. 8.3      |
    +-----------+-------------------------------------------------------+
    | Reset     |  only in response to other packets                    |
    | Sync      |  only in response to sequence-invalid packets (7.5.4) |
    | SyncAck   |  only in response to Sync packets                     |
    +-----------+-------------------------------------------------------+
    
    Hence the only packets eligible for retransmission are:
           * Requests in client-REQUEST  state (sec. 8.1.1)
           * Acks     in client-PARTOPEN state (sec. 8.1.5)
           * CloseReq in server-CLOSEREQ state (sec. 8.3)
           * Close    in   node-CLOSING  state (sec. 8.3)
    
    I had meant to put in a check for these types too, but have left that
    for later.
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
    08a29e41
timer.c 7.16 KB