src/server/daemon/protocol.c

changeset 720
8c7d08d3be2e
parent 660
f00d03835dd9
equal deleted inserted replaced
719:c4c2b8e8ddc5 720:8c7d08d3be2e
338 char *ctlen = pblock_findkeyval(pb_key_content_length, rq->srvhdrs); 338 char *ctlen = pblock_findkeyval(pb_key_content_length, rq->srvhdrs);
339 char *enc = pblock_findkeyval(pb_key_transfer_encoding, rq->srvhdrs); 339 char *enc = pblock_findkeyval(pb_key_transfer_encoding, rq->srvhdrs);
340 if(ctlen && enc) { 340 if(ctlen && enc) {
341 pblock_removekey(pb_key_transfer_encoding, rq->srvhdrs); 341 pblock_removekey(pb_key_transfer_encoding, rq->srvhdrs);
342 } 342 }
343 if(!ctlen) { 343 if(!ctlen && rq->status_num != 101) {
344 // set transfer-encoding header 344 // set transfer-encoding header
345 if(!enc) { 345 if(!enc) {
346 pblock_kvinsert( 346 pblock_kvinsert(
347 pb_key_transfer_encoding, 347 pb_key_transfer_encoding,
348 "chunked", 348 "chunked",
368 // add connection header 368 // add connection header
369 if(rq->rq_attr.keep_alive) { 369 if(rq->rq_attr.keep_alive) {
370 cxBufferWrite("Connection: keep-alive\r\n", 1, 24, &writer->buf); 370 cxBufferWrite("Connection: keep-alive\r\n", 1, 24, &writer->buf);
371 pblock_kvinsert(pb_key_connection, "keep-alive", 10, rq->srvhdrs); 371 pblock_kvinsert(pb_key_connection, "keep-alive", 10, rq->srvhdrs);
372 } else { 372 } else {
373 cxBufferWrite("Connection: close\r\n", 1, 19, &writer->buf); 373 if(!pblock_findkeyval(pb_key_connection, rq->srvhdrs)) {
374 pblock_kvinsert(pb_key_connection, "close", 5, rq->srvhdrs); 374 cxBufferWrite("Connection: close\r\n", 1, 19, &writer->buf);
375 pblock_kvinsert(pb_key_connection, "close", 5, rq->srvhdrs);
376 }
375 } 377 }
376 378
377 // response header end 379 // response header end
378 cxBufferWrite("\r\n", 1, 2,& writer->buf); 380 cxBufferWrite("\r\n", 1, 2,& writer->buf);
379 381

mercurial