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)
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
/* 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;
}
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
return 0;
}
- /* resize! XXX */
b = ldns_buffer_new(LDNS_MIN_BUFLEN);
if (ldns_pkt2buffer_wire(b, p) != LDNS_STATUS_OK) {
/* 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);