picoquic/frames.c
static uint8_t* picoquic_skip_ack_frame_maybe_ecn(uint8_t* bytes, const uint8_t* bytes_max, int is_ecn, int has_1wd)
{
    uint64_t nb_blocks;

    if ((bytes = picoquic_frames_varint_skip(bytes + 1, bytes_max)) != NULL) {
        if (has_1wd) {
            bytes = picoquic_frames_varint_skip(bytes, bytes_max);
        }
        if (bytes != NULL &&
            (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) != NULL &&
            (bytes = picoquic_frames_varint_decode(bytes, bytes_max, &nb_blocks)) != NULL &&
            (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) != NULL)
        {
            while (nb_blocks-- != 0) {
                if ((bytes = picoquic_frames_varint_skip(bytes, bytes_max)) == NULL ||
                    (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) == NULL)
                {
                    break;
                }
            }
        }
    }
   
    if (bytes != NULL && is_ecn) {
        for (int i = 0; bytes != NULL && i < 3; i++) {
            bytes = picoquic_frames_varint_skip(bytes, bytes_max);
        }
    }

    return bytes;
}
/*
 * The ACK skipping function only supports the varint format.
 * The old "fixed int" versions are supported by code in the skip_frame function
 */
The ACK skipping function only supports the varint format.
The old "fixed int" versions are supported by code in the skip_frame function
The ACK skipping function only supports the varint format . The old " fixed int " versions are supported by code in the skip_frame function
static uint8_t* picoquic_skip_ack_frame_maybe_ecn(uint8_t* bytes, const uint8_t* bytes_max, int is_ecn, int has_1wd)
{
    uint64_t nb_blocks;
    if ((bytes = picoquic_frames_varint_skip(bytes + 1, bytes_max)) != NULL) {
        if (has_1wd) {
            bytes = picoquic_frames_varint_skip(bytes, bytes_max);
        }
        if (bytes != NULL &&
            (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) != NULL &&
            (bytes = picoquic_frames_varint_decode(bytes, bytes_max, &nb_blocks)) != NULL &&
            (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) != NULL)
        {
            while (nb_blocks-- != 0) {
                if ((bytes = picoquic_frames_varint_skip(bytes, bytes_max)) == NULL ||
                    (bytes = picoquic_frames_varint_skip(bytes, bytes_max)) == NULL)
                {
                    break;
                }
            }
        }
    }
    if (bytes != NULL && is_ecn) {
        for (int i = 0; bytes != NULL && i < 3; i++) {
            bytes = picoquic_frames_varint_skip(bytes, bytes_max);
        }
    }
    return bytes;
}
static uint8_t * picoquic_skip_ack_frame_maybe_ecn ( uint8_t * bytes , const uint8_t * bytes_max , int is_ecn , int has_1wd ) { uint64_t nb_blocks ; if ( ( bytes = picoquic_frames_varint_skip ( bytes + 1 , bytes_max ) ) != NULL ) { if ( has_1wd ) { bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ; } if ( bytes != NULL && ( bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ) != NULL && ( bytes = picoquic_frames_varint_decode ( bytes , bytes_max , & nb_blocks ) ) != NULL && ( bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ) != NULL ) { while ( nb_blocks -- != 0 ) { if ( ( bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ) == NULL || ( bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ) == NULL ) { break ; } } } } if ( bytes != NULL && is_ecn ) { for ( int i = 0 ; bytes != NULL && i < 3 ; i ++ ) { bytes = picoquic_frames_varint_skip ( bytes , bytes_max ) ; } } return bytes ; }
The ACK skipping function only supports the varint format.
The ACK skipping function only supports the varint format .