Fix. Easy cleanup unref wrong reference

Fix. Read buffer use size_t as offset
Change. Use httpbin.org as test server

```Lua
-- Test case for easy:close()
form = curl.form()
e = curl.easy{httpheader = {}}
e:close()
form:free()
```
This commit is contained in:
Alexey Melnichuk 2014-09-07 11:21:54 +04:00
parent f9db68d41e
commit 05272ea096
3 changed files with 6 additions and 6 deletions

View File

@ -87,7 +87,6 @@ static int lcurl_easy_cleanup(lua_State *L){
p->rbuffer.ref = LUA_NOREF; p->rbuffer.ref = LUA_NOREF;
for(i = 0; i < LCURL_LIST_COUNT; ++i){ for(i = 0; i < LCURL_LIST_COUNT; ++i){
luaL_unref(L, LCURL_LUA_REGISTRY, p->lists[i]);
p->lists[i] = LUA_NOREF; p->lists[i] = LUA_NOREF;
} }
@ -696,7 +695,7 @@ static size_t lcurl_read_callback(lua_State *L,
assert(rbuffer->ref == LUA_NOREF); assert(rbuffer->ref == LUA_NOREF);
n = lcurl_util_push_cb(L, rd); n = lcurl_util_push_cb(L, rd);
lua_pushnumber(L, ret); lua_pushinteger(L, ret);
if(lua_pcall(L, n, LUA_MULTRET, 0)) return CURL_READFUNC_ABORT; if(lua_pcall(L, n, LUA_MULTRET, 0)) return CURL_READFUNC_ABORT;
if(lua_isnoneornil(L, top + 1)){ if(lua_isnoneornil(L, top + 1)){
@ -786,7 +785,7 @@ static int lcurl_xferinfo_callback(void *arg, curl_off_t dltotal, curl_off_t dln
if(lua_isboolean(L, top + 1)) if(lua_isboolean(L, top + 1))
ret = lua_toboolean(L, top + 1)?0:1; ret = lua_toboolean(L, top + 1)?0:1;
else{ else{
ret = (size_t)lua_tonumber(L, top + 1); ret = lua_tointeger(L, top + 1);
if(ret == 0) ret = 1; else ret = 0; if(ret == 0) ret = 1; else ret = 0;
} }
} }

View File

@ -20,7 +20,7 @@ typedef struct lcurl_callback_tag{
typedef struct lcurl_read_buffer_tag{ typedef struct lcurl_read_buffer_tag{
int ref; int ref;
int off; size_t off;
}lcurl_read_buffer_t; }lcurl_read_buffer_t;
int lcurl_storage_init(lua_State *L); int lcurl_storage_init(lua_State *L);

View File

@ -5,7 +5,8 @@ local curl = require "lcurl"
-- i.e. 1 means that CURLPAUSE_CONT will be performed immediately after pause.) -- i.e. 1 means that CURLPAUSE_CONT will be performed immediately after pause.)
local WAIT_COUNT = 32 local WAIT_COUNT = 32
local RESOURCE_URL = "http://www.rfc-editor.org/rfc/rfc2543.txt" local SIZE = 100 * 1024
local RESOURCE_URL = "http://httpbin.org/bytes/" .. SIZE
local State = { local State = {
PAUSE = 0, -- write function should return CURL_WRITEFUNC_PAUSE PAUSE = 0, -- write function should return CURL_WRITEFUNC_PAUSE