225 logger.log (Level.WARNING, msg); |
225 logger.log (Level.WARNING, msg); |
226 } |
226 } |
227 contentLen = -1; |
227 contentLen = -1; |
228 } |
228 } |
229 |
229 |
230 if (isHeadRequest()) { |
230 if (isHeadRequest() || rCode == 304) { |
231 /* HEAD requests should not set a content length by passing it |
231 /* HEAD requests or 304 responses should not set a content length by passing it |
232 * through this API, but should instead manually set the required |
232 * through this API, but should instead manually set the required |
233 * headers.*/ |
233 * headers.*/ |
234 if (contentLen >= 0) { |
234 if (contentLen >= 0) { |
235 final Logger logger = server.getLogger(); |
235 final Logger logger = server.getLogger(); |
236 String msg = |
236 String msg = |
237 "sendResponseHeaders: being invoked with a content length for a HEAD request"; |
237 "sendResponseHeaders: being invoked with a content length for a HEAD request"; |
238 logger.log (Level.WARNING, msg); |
238 logger.log (Level.WARNING, msg); |
239 } |
239 } |
240 noContentToSend = true; |
240 noContentToSend = true; |
241 contentLen = 0; |
241 contentLen = 0; |
242 } else { /* not a HEAD request */ |
242 } else { /* not a HEAD request or 304 response */ |
243 if (contentLen == 0) { |
243 if (contentLen == 0) { |
244 if (http10) { |
244 if (http10) { |
245 o.setWrappedStream (new UndefLengthOutputStream (this, ros)); |
245 o.setWrappedStream (new UndefLengthOutputStream (this, ros)); |
246 close = true; |
246 close = true; |
247 } else { |
247 } else { |