src/server/daemon/httprequest.c

changeset 448
02b003f7560c
parent 415
d938228c382e
child 449
a28a5ccc894b
equal deleted inserted replaced
447:45d1b02fa80b 448:02b003f7560c
300 pb_key_uri, 300 pb_key_uri,
301 absPath.ptr, 301 absPath.ptr,
302 absPath.length, 302 absPath.length,
303 rq->rq.reqpb); 303 rq->rq.reqpb);
304 } else { 304 } else {
305 // TODO: log error
306 log_ereport( 305 log_ereport(
307 LOG_WARN, 306 LOG_WARN,
308 "uri unescape failed: {%.*s}", 307 "uri unescape failed: {%.*s}",
309 (int)absPath.length, 308 (int)absPath.length,
310 absPath.ptr); 309 absPath.ptr);
419 } 418 }
420 char *transfer_encoding = pblock_findkeyval(pb_key_transfer_encoding, rq->rq.headers); 419 char *transfer_encoding = pblock_findkeyval(pb_key_transfer_encoding, rq->rq.headers);
421 if(transfer_encoding) { 420 if(transfer_encoding) {
422 if(!strcmp(transfer_encoding, "chunked")) { 421 if(!strcmp(transfer_encoding, "chunked")) {
423 netbuf *nb = sn->netbuf; 422 netbuf *nb = sn->netbuf;
424 sn->buffer = (char*)nb->inbuf; 423 sn->buffer = pool_malloc(pool, nb->maxsize);
424 if(!sn->buffer) {
425 pool_destroy(pool);
426 // TODO: error 500
427 return 1;
428 }
429 if(nb->cursize - nb->pos > 0) {
430 memcpy(sn->buffer, nb->inbuf, nb->cursize);
431 }
432
425 sn->pos = nb->pos; 433 sn->pos = nb->pos;
426 sn->cursize = nb->cursize; 434 sn->cursize = nb->cursize;
435
436 nb->pos = 0;
437 nb->cursize = 0;
427 438
428 if(httpstream_enable_chunked_read(sn->sn.csd, sn->buffer, nb->maxsize, &sn->cursize, &sn->pos)) { 439 if(httpstream_enable_chunked_read(sn->sn.csd, sn->buffer, nb->maxsize, &sn->cursize, &sn->pos)) {
429 pool_destroy(pool); 440 pool_destroy(pool);
430 // TODO: error 500 441 // TODO: error 500
431 return 1; 442 return 1;
432 } 443 }
433 } 444 } // else: TODO: unknown transfer encoding error
434 } 445 }
435 446
436 // 447 //
437 // Send the request to the NSAPI system 448 // Send the request to the NSAPI system
438 // 449 //

mercurial