suspend fun ApplicationCall.withETag(etag: String, putHeader: Boolean = true, block: suspend () -> Unit)

Checks current etag value and pass it through conditions supplied by the remote client. Depends on conditions it produces 410 Precondition Failed or 304 Not modified responses when necessary. Otherwise sets ETag header and delegates to the block function

It never handles If-None-Match: * as it is related to non-etag logic (for example, Last modified checks). See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26 for more details