Урам, всем спасибо большое, по ходу дела заработало.
Я сделал в контексте флаг ctx->done , внутри хендлера его выствляю и делаю так:
ctx->done = 1;
r->read_event_handler = ngx_http_request_empty_handler;
r->write_event_handler = ngx_http_core_run_phases; /*?*/
ngx_http_mymodule_parse(r);
ngx_http_core_run_phases(r);
return;
Cоответственно если ctx->done то возвращаю NGX_DECLINED:
если нет, то вызываю ngx_http_read_client_request_body() и возвращаю NGX_OK.
В таком случае обработчик дергается 1 раз и с полным буфером.
Еще раз спасибо,
Максим.