let mut i: i64 = 0;
- for request in &tx.request {
-
- if request.queries.len() == 0 {
- break;
- }
-
- lua.newtable();
+ // Create table now to be consistent with C that always returns
+ // table even in the absence of any authorities.
+ lua.newtable();
+ // We first look in the request for queries. However, if there is
+ // no request, check the response for queries.
+ if let &Some(ref request) = &tx.request {
for query in &request.queries {
lua.pushinteger(i);
i += 1;
lua.settable(-3);
}
+ } else if let &Some(ref response) = &tx.response {
+ for query in &response.queries {
+ lua.pushinteger(i);
+ i += 1;
+
+ lua.newtable();
+
+ lua.pushstring("type");
+ lua.pushstring(&dns_rrtype_string(query.rrtype));
+ lua.settable(-3);
+
+ lua.pushstring("rrname");
+ lua.pushstring(&String::from_utf8_lossy(&query.name));
+ lua.settable(-3);
- return 1;
+ lua.settable(-3);
+ }
}
- return 0;
+ // Again, always return 1 to be consistent with C, even if the
+ // table is empty.
+ return 1;
}
#[no_mangle]
let mut i: i64 = 0;
- for response in &tx.response {
-
- if response.answers.len() == 0 {
- break;
- }
-
- lua.newtable();
+ // Create table now to be consistent with C that always returns
+ // table even in the absence of any authorities.
+ lua.newtable();
+ if let &Some(ref response) = &tx.response {
for answer in &response.answers {
lua.pushinteger(i);
i += 1;
}
lua.settable(-3);
}
-
- return 1;
}
- return 0;
+ // Again, always return 1 to be consistent with C, even if the
+ // table is empty.
+ return 1;
}
#[no_mangle]
let mut i: i64 = 0;
- for response in &tx.response {
-
- if response.authorities.len() == 0 {
- break;
- }
-
- lua.newtable();
+ // Create table now to be consistent with C that always returns
+ // table even in the absence of any authorities.
+ lua.newtable();
+ if let &Some(ref response) = &tx.response {
for answer in &response.authorities {
lua.pushinteger(i);
i += 1;
lua.settable(-3);
}
-
- return 1;
}
- return 0;
+ // Again, always return 1 to be consistent with C, even if the
+ // table is empty.
+ return 1;
}