From b7a58680db4a0c65abf3adb3827db327439a6109 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Fri, 7 Dec 2018 09:08:16 -0600 Subject: [PATCH] dns/rust - if let Some over options instead of loop. Except in one case where the loop makes more sense for easy break out. Also remove one line of non-conforming debug logging. --- rust/src/dns/dns.rs | 11 +++++------ rust/src/dns/log.rs | 21 +++++++++++---------- rust/src/dns/lua.rs | 6 ++---- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/rust/src/dns/dns.rs b/rust/src/dns/dns.rs index f6f2fd5810..27169c8f8e 100644 --- a/rust/src/dns/dns.rs +++ b/rust/src/dns/dns.rs @@ -215,10 +215,10 @@ impl DNSTransaction { /// Get the DNS transactions ID (not the internal tracking ID). pub fn tx_id(&self) -> u16 { - for request in &self.request { + if let &Some(ref request) = &self.request { return request.header.tx_id; } - for response in &self.response { + if let &Some(ref response) = &self.response { return response.header.tx_id; } @@ -229,7 +229,7 @@ impl DNSTransaction { /// Get the reply code of the transaction. Note that this will /// also return 0 if there is no reply. pub fn rcode(&self) -> u16 { - for response in &self.response { + if let &Some(ref response) = &self.response { return response.header.flags & 0x000f; } return 0; @@ -292,7 +292,6 @@ impl DNSState { } pub fn free_tx(&mut self, tx_id: u64) { - SCLogDebug!("************** Freeing TX with ID {}", tx_id); let len = self.transactions.len(); let mut found = false; let mut index = 0; @@ -770,7 +769,7 @@ pub extern "C" fn rs_dns_tx_get_query_name(tx: &mut DNSTransaction, len: *mut libc::uint32_t) -> libc::uint8_t { - for request in &tx.request { + if let &Some(ref request) = &tx.request { if (i as usize) < request.queries.len() { let query = &request.queries[i as usize]; if query.name.len() > 0 { @@ -810,7 +809,7 @@ pub extern "C" fn rs_dns_tx_get_query_rrtype(tx: &mut DNSTransaction, rrtype: *mut libc::uint16_t) -> libc::uint8_t { - for request in &tx.request { + if let &Some(ref request) = &tx.request { if (i as usize) < request.queries.len() { let query = &request.queries[i as usize]; if query.name.len() > 0 { diff --git a/rust/src/dns/log.rs b/rust/src/dns/log.rs index 0ebbeb241a..9a34c5b997 100644 --- a/rust/src/dns/log.rs +++ b/rust/src/dns/log.rs @@ -564,7 +564,7 @@ pub extern "C" fn rs_dns_log_json_query(tx: &mut DNSTransaction, -> *mut JsonT { let index = i as usize; - for request in &tx.request { + if let &Some(ref request) = &tx.request { if index < request.queries.len() { let query = &request.queries[index]; if dns_log_rrtype_enabled(query.rrtype, flags) { @@ -587,7 +587,7 @@ pub extern "C" fn rs_dns_log_json_answer(tx: &mut DNSTransaction, flags: libc::uint64_t) -> *mut JsonT { - for response in &tx.response { + if let &Some(ref response) = &tx.response { for query in &response.queries { if dns_log_rrtype_enabled(query.rrtype, flags) { let js = dns_log_json_answer(response, flags as u64); @@ -679,6 +679,8 @@ pub extern "C" fn rs_dns_log_json_answer_v1(tx: &mut DNSTransaction, -> *mut JsonT { let index = i as usize; + // Note for loop over Option for easier break out to default + // return value. for response in &tx.response { if response.header.flags & 0x000f > 0 { if index == 0 { @@ -705,14 +707,13 @@ pub extern "C" fn rs_dns_log_json_authority_v1(tx: &mut DNSTransaction, -> *mut JsonT { let index = i as usize; - for response in &tx.response { - if index >= response.authorities.len() { - break; - } - let answer = &response.authorities[index]; - if dns_log_rrtype_enabled(answer.rrtype, flags) { - let js = dns_log_json_answer_v1(&response.header, answer); - return js.unwrap(); + if let &Some(ref response) = &tx.response { + if index < response.authorities.len() { + let answer = &response.authorities[index]; + if dns_log_rrtype_enabled(answer.rrtype, flags) { + let js = dns_log_json_answer_v1(&response.header, answer); + return js.unwrap(); + } } } return std::ptr::null_mut(); diff --git a/rust/src/dns/lua.rs b/rust/src/dns/lua.rs index 0c1776a741..fddeeb9767 100644 --- a/rust/src/dns/lua.rs +++ b/rust/src/dns/lua.rs @@ -41,14 +41,12 @@ pub extern "C" fn rs_dns_lua_get_rrname(clua: &mut CLuaState, lua: clua, }; - for request in &tx.request { + if let &Some(ref request) = &tx.request { for query in &request.queries { lua.pushstring(&String::from_utf8_lossy(&query.name)); return 1; } - } - - for response in &tx.response { + } else if let &Some(ref response) = &tx.response { for query in &response.queries { lua.pushstring(&String::from_utf8_lossy(&query.name)); return 1;