Thanks to visit codestin.com
Credit goes to github.com

Skip to content

HTTP 请求流重复读取,导致Checksum重复累计 #569

@codingPao

Description

@codingPao

场景:目前在针对HTTP相关请求做流量录制,针对apache http client v4版本客户端,判断org.apache.http.entity.BasicHttpEntity#isRepeatable为true时,会调用org.apache.http.entity.BasicHttpEntity#writeTo进行流量得一次copy.

问题:在CRC64校验开启得情况下,在com.aliyun.oss.common.comm.io.ChunkedInputStreamEntity#writeTo中,对于重复读取会进行输入流得重置从而可以重复读取输入流,默认使用得是java.util.zip.CheckedInputStream#CheckedInputStream,目前发现进行 content.reset()时,不会进行内部的Checksum重置,导致在进行流量copy时,会导致Checksum再次累计,最终导致客户端与服务端sum值不一致,导致InconsistentException.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions