File tree Expand file tree Collapse file tree
main/kotlin/okhttp3/dnsoverhttps/internal
test/java/okhttp3/dnsoverhttps Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -166,12 +166,17 @@ internal fun DnsMessage.asQueryParameter(): String {
166166}
167167
168168internal class QueryRequestBody (
169- private val query : DnsMessage ,
169+ query : DnsMessage ,
170170) : RequestBody() {
171+ private val content = Buffer ().also { DnsMessageWriter (it).write(query) }.readByteString()
172+
171173 override fun contentType () = DNS_MESSAGE
172174
175+ // Cloudflare doesn't support chunked encoding
176+ override fun contentLength () = content.size.toLong()
177+
173178 override fun writeTo (sink : BufferedSink ) {
174- DnsMessageWriter ( sink.buffer). write(query )
179+ sink.write(content )
175180 sink.emitCompleteSegments()
176181 }
177182}
Original file line number Diff line number Diff line change @@ -21,7 +21,9 @@ import assertk.assertions.containsExactly
2121import assertk.assertions.hasMessage
2222import assertk.assertions.hasSize
2323import assertk.assertions.isEqualTo
24+ import assertk.assertions.isGreaterThan
2425import assertk.assertions.isInstanceOf
26+ import assertk.assertions.isNotNull
2527import assertk.assertions.isNull
2628import assertk.assertions.isTrue
2729import java.io.EOFException
@@ -382,6 +384,11 @@ class DnsOverHttpsTest(
382384 assertThat(httpsRequest1!! .method).isEqualTo(" POST" )
383385 assertThat(httpsRequest1.url.encodedQuery)
384386 .isEqualTo(" ct" )
387+ // Cloudflare fails on chunked encoding
388+ assertThat(httpsRequest1.headers[" Content-Length" ]?.toLong())
389+ .isNotNull()
390+ .isGreaterThan(12L ) // A DNS message has a 12-byte header followed by its questions.
391+ assertThat(httpsRequest1.chunkSizes).isNull()
385392
386393 assertThat(cacheEvents()).containsExactly(CacheMiss ::class )
387394
You can’t perform that action at this time.
0 commit comments