Mercurial > hg > nginx
comparison src/http/modules/ngx_http_memcached_module.c @ 1611:d5db0e96bcc6 stable-0.5
r1542, r1543, r1544, r1549, r1550, r1551, r1555 merge:
*) ngx_strstrn() and ngx_strcasestrn()
*) fix memcached END test
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 29 Oct 2007 14:52:51 +0000 |
parents | 142d979bc738 |
children | a33e2a1a4e4c |
comparison
equal
deleted
inserted
replaced
1610:f5e9d597a751 | 1611:d5db0e96bcc6 |
---|---|
423 b = &u->buffer; | 423 b = &u->buffer; |
424 | 424 |
425 if (u->length == ctx->rest) { | 425 if (u->length == ctx->rest) { |
426 | 426 |
427 if (ngx_strncmp(b->last, | 427 if (ngx_strncmp(b->last, |
428 ngx_http_memcached_end + NGX_HTTP_MEMCACHED_END | 428 ngx_http_memcached_end + NGX_HTTP_MEMCACHED_END - ctx->rest, |
429 - ctx->rest, | 429 ctx->rest) |
430 bytes) != 0) | 430 != 0) |
431 { | 431 { |
432 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, | 432 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, |
433 "memcached sent invalid trailer"); | 433 "memcached sent invalid trailer"); |
434 } | 434 } |
435 | 435 |
436 u->length -= bytes; | 436 u->length = 0; |
437 ctx->rest -= bytes; | 437 ctx->rest = 0; |
438 | 438 |
439 return NGX_OK; | 439 return NGX_OK; |
440 } | 440 } |
441 | 441 |
442 for (cl = u->out_bufs, ll = &u->out_bufs; cl; cl = cl->next) { | 442 for (cl = u->out_bufs, ll = &u->out_bufs; cl; cl = cl->next) { |
451 cl->buf->flush = 1; | 451 cl->buf->flush = 1; |
452 cl->buf->memory = 1; | 452 cl->buf->memory = 1; |
453 | 453 |
454 *ll = cl; | 454 *ll = cl; |
455 | 455 |
456 cl->buf->pos = b->last; | 456 last = b->last; |
457 cl->buf->pos = last; | |
457 b->last += bytes; | 458 b->last += bytes; |
458 cl->buf->last = b->last; | 459 cl->buf->last = b->last; |
459 | 460 |
460 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, ctx->request->connection->log, 0, | 461 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, ctx->request->connection->log, 0, |
461 "memcached filter bytes:%z size:%z length:%z rest:%z", | 462 "memcached filter bytes:%z size:%z length:%z rest:%z", |
462 bytes, b->last - b->pos, u->length, ctx->rest); | 463 bytes, b->last - b->pos, u->length, ctx->rest); |
463 | 464 |
464 if (b->last - b->pos <= (ssize_t) (u->length - NGX_HTTP_MEMCACHED_END)) { | 465 if (bytes <= (ssize_t) (u->length - NGX_HTTP_MEMCACHED_END)) { |
465 u->length -= bytes; | 466 u->length -= bytes; |
466 return NGX_OK; | 467 return NGX_OK; |
467 } | 468 } |
468 | 469 |
469 | 470 last += u->length - NGX_HTTP_MEMCACHED_END; |
470 last = b->pos + u->length - NGX_HTTP_MEMCACHED_END; | |
471 | 471 |
472 if (ngx_strncmp(last, ngx_http_memcached_end, b->last - last) != 0) { | 472 if (ngx_strncmp(last, ngx_http_memcached_end, b->last - last) != 0) { |
473 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, | 473 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, |
474 "memcached sent invalid trailer"); | 474 "memcached sent invalid trailer"); |
475 } | 475 } |
476 | 476 |
477 ctx->rest = u->length - (b->last - b->pos); | 477 ctx->rest -= b->last - last; |
478 b->last = last; | 478 b->last = last; |
479 cl->buf->last = last; | 479 cl->buf->last = last; |
480 u->length = ctx->rest; | 480 u->length = ctx->rest; |
481 | 481 |
482 return NGX_OK; | 482 return NGX_OK; |