From: Miek Gieben Date: Thu, 25 Aug 2005 12:59:06 +0000 (+0000) Subject: some addition. I believe the buffer bug is not there anymore. Or isn't a bug in the... X-Git-Tag: release-1.0.0~236 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70d39a393ae3810fe3aa49a0d288a4d68d78ab4e;p=thirdparty%2Fldns.git some addition. I believe the buffer bug is not there anymore. Or isn't a bug in the first place --- diff --git a/buffer.c b/buffer.c index ca97f2d3..d9f4c250 100644 --- a/buffer.c +++ b/buffer.c @@ -43,7 +43,7 @@ ldns_buffer_new_frm_data(ldns_buffer *buffer, void *data, size_t size) { assert(data != NULL); - buffer->_position = 0; + buffer->_position = 0; buffer->_limit = buffer->_capacity = size; buffer->_data = LDNS_XMALLOC(uint8_t, size); memcpy(buffer->_data, data, size); diff --git a/lua/echo.lua b/lua/echo.lua index 62a414d9..31da7f11 100644 --- a/lua/echo.lua +++ b/lua/echo.lua @@ -36,6 +36,8 @@ while true do nameserver_bytes = udp.write(socket_nameserver, wirebuf2, rdf_ip_nameserver, 53) if nameserver_bytes == nil then lua_debug("ns write error") + else + lua_debug("wrote %d bytes", nameserver_bytes) end nameserver_buf, sockaddr_from_nameserver = udp.read(socket_nameserver) @@ -44,26 +46,28 @@ while true do nameserver_pkt = buffer.to_pkt(nameserver_buf) lua_debug("received from the nameserver") packet.print(nameserver_pkt) -if true then - -- next we must send it to our recursive nameserver - -- and pick up the result - -- then we modify the result somewhat and sent it back - -- to the client - -- write back to the client - -- This is fishy + -- This is fishy, why the new buf?? nsbuf2 = packet.to_buf(nameserver_pkt) - bytes = lua_udp_write(socket, nsbuf2, sockaddr_from) -else - bytes = lua_udp_write(socket, wirebuf2, sockaddr_from) -end + + print("nsbuf2") + buffer.info(nsbuf2) + print("nameserver_buf") + buffer.info(nameserver_buf) + + bytes = lua_udp_write(socket, nsbuf2, sockaddr_from) --this works + --bytes = lua_udp_write(socket, nameserver_buf, sockaddr_from) ----this not + --but is the above legal?? -- + if bytes == nil then lua_debug("write error") - else - lua_debug("wrote bytes", bytes) - packet.print(pkt) end + + buffer.free(nsbuf2) + buffer.free(nameserver_buf) + buffer.free(wirebuf2) + buffer.free(wirebuf) end end diff --git a/lua/lua-rns.c b/lua/lua-rns.c index 23c9b308..5af6a25d 100644 --- a/lua/lua-rns.c +++ b/lua/lua-rns.c @@ -431,7 +431,6 @@ l_read_wire_udp(lua_State *L) /* stack func lua cal in same order buf, from */ lua_pushlightuserdata(L, pktbuf); lua_pushlightuserdata(L, from); - /* lua_pushnumber(L, (lua_Number)from_size); */ return 2; } @@ -517,6 +516,32 @@ l_pkt_set_id(lua_State *L) return 0; } +/* BUFFERs */ +static int +l_buf_free(lua_State *L) +{ + ldns_buffer *b = (ldns_buffer *)lua_touserdata(L, 1); + if (!b) { + return 0; + } + ldns_buffer_free(b); + return 0; +} + +static int +l_buf_info(lua_State *L) +{ + ldns_buffer *b = (ldns_buffer *)lua_touserdata(L, 1); + if (!b) { + return 0; + } + printf("capacity %d; position %d; limit %d\n", + ldns_buffer_capacity(b), + ldns_buffer_position(b), + ldns_buffer_limit(b)); + return 0; +} + /* ============ CONVERSION @@ -550,7 +575,6 @@ l_pkt2buf(lua_State *L) return 0; } - /* resize! XXX */ b = ldns_buffer_new(LDNS_MIN_BUFLEN); if (ldns_pkt2buffer_wire(b, p) != LDNS_STATUS_OK) { @@ -696,6 +720,8 @@ register_ldns_functions(void) /* BUFFERs */ static const struct luaL_reg l_buf_lib [] = { {"to_pkt", l_buf2pkt}, + {"free", l_buf_free}, + {"info", l_buf_info}, {NULL, NULL} }; luaL_openlib(L, "buffer", l_buf_lib, 0); diff --git a/lua/test.lua b/lua/test.lua index f2bc9bc8..7b2f4925 100644 --- a/lua/test.lua +++ b/lua/test.lua @@ -9,6 +9,7 @@ my_rr4 = record.new_frm_str("www.atoom.net. IN A 192.168.1.2") record.print(my_rr) record.print(my_rr2) record.print(my_rr4) +print("nothing?") my_pkt = packet.new(); diff --git a/lua/test2.lua b/lua/test2.lua index fc804956..2f3f987f 100644 --- a/lua/test2.lua +++ b/lua/test2.lua @@ -1,4 +1,5 @@ -- source the lib file with the function dofile("rns-lib.lua") -my_pkt = packet.new(); +my_pkt = packet.new() +packet.print(my_pkt)