Hi all, thanks for the help but after more changes and taking in count your suggestions i am still stuck with the problem (it cannot be in Lua, must be done in C as i am streaming binary data).
If anyone of you is interested, i will put a budget of 100USD for who is interested into fix the test case as required, for more details send me a private email to discuss the requirements and what is expected as result. thanks, On Sun, Jul 14, 2013 at 10:57 PM, Yichun Zhang (agentzh) <agen...@gmail.com>wrote: > Hello! > > On Sun, Jul 14, 2013 at 8:43 PM, Julien Zefi wrote: > > > > Sorry by bother you again but i still cannot figure out how some > internals > > are not working as i expect. I have take in count your suggestions and > wrote > > a new test case (file attached). > > > > 1. You should simply call ngx_http_output_filter(r, NULL); in your > r->write_event_handler, but you set r->write_event_handler to > ngx_http_test_stream_handler which always emits brand new data. I'm > guessing you don't really understand how the ngx_http_writer and > ngx_http_set_write_handler functions are implemented in the Nginx > core. Look harder. > > 2. You should not set r->header_only = 1 in your case because you're > actually sending out the response body. Ensure that you know how a > flag works before you start using it. > > 3. Another obvious mistake is that you incorrectly perform > > r->main->count++; > > without decrementing it by calling ngx_http_finalize_request, which > will certainly lead to request hang. Ensure that you understand this > flag before using it. > > > The test case writes 12.3KB of data every 1ms, at some point it will > raise > > NGX_AGAIN but from there is not recovering, it keeps in the same state > > forever, do you see any specific problem when handling the exception ? > > > > This is trivial to implement by writing some Lua code using ngx_lua module: > > location /t { > content_by_lua ' > local message = "..." > for i = 1, 100 do > ngx.print(message) > ngx.flush(true) > ngx.sleep(0.001) > end > '; > } > > Maybe you can just use ngx_lua for your purposes without all the pain > of understanding the nginx internals (you seem to lack a lot of > knowledge here). If you insist in writing your own nginx C module, > then just check out how ngx_lua implements all the APIs demonstrated > in the example above. You can also check out the official > documentation of ngx_lua: > > http://wiki.nginx.org/HttpLuaModule > > Best regards, > -agentzh >
_______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel