From da25f773269bb9202ec4b63f648e13bd55a3ce4c Mon Sep 17 00:00:00 2001 From: "roberto@sirius" Date: Sun, 24 Oct 2010 12:52:09 +0200 Subject: [PATCH] report correct response size in Lua plugin --- plugins/lua/lua_plugin.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/lua/lua_plugin.c b/plugins/lua/lua_plugin.c index 173ddeea..40f803d9 100644 --- a/plugins/lua/lua_plugin.c +++ b/plugins/lua/lua_plugin.c @@ -110,6 +110,7 @@ int uwsgi_lua_request(struct wsgi_request *wsgi_req) { int i; const char *http ; size_t slen ; + ssize_t rlen; char *ptrbuf; lua_State *L = ulua.L[wsgi_req->async_id]; @@ -118,10 +119,11 @@ int uwsgi_lua_request(struct wsgi_request *wsgi_req) { if ((i = lua_pcall(L, 0, 1, 0)) == 0) { if (lua_type(L, -1) == LUA_TSTRING) { http = lua_tolstring(L, -1, &slen); - if (write(wsgi_req->poll.fd, http, slen) != (ssize_t) slen) { + if ( (rlen = write(wsgi_req->poll.fd, http, slen)) != (ssize_t) slen) { perror("write()"); return UWSGI_OK ; } + wsgi_req->response_size += rlen; } lua_pop(L, 1); lua_pushvalue(L, -1); @@ -239,10 +241,11 @@ int uwsgi_lua_request(struct wsgi_request *wsgi_req) { while ( (i = lua_pcall(L, 0, 1, 0)) == 0) { if (lua_type(L, -1) == LUA_TSTRING) { http = lua_tolstring(L, -1, &slen); - if (write(wsgi_req->poll.fd, http, slen) != (ssize_t) slen) { + if ( (rlen = write(wsgi_req->poll.fd, http, slen)) != (ssize_t) slen) { perror("write()"); goto clear; } + wsgi_req->response_size += rlen; } lua_pop(L, 1); lua_pushvalue(L, -1);