MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / _handle_request

Function _handle_request

chirpstack/src/api/backend/mod.rs:100–184  ·  view source on GitHub ↗
(bp: BasePayload, b: Vec<u8>)

Source from the content-addressed store, hash-verified

98}
99
100pub async fn _handle_request(bp: BasePayload, b: Vec<u8>) -> Response {
101 info!("Request received");
102
103 let sender_client = {
104 if bp.sender_id.len() == 8 {
105 // JoinEUI.
106 let sender_id = match EUI64::from_slice(&bp.sender_id) {
107 Ok(v) => v,
108 Err(e) => {
109 warn!(error = %e.full(), "Error decoding SenderID as EUI64");
110 let msg = format!("Error decoding SenderID: {}", e);
111 let pl = bp.to_base_payload_result(backend::ResultCode::MalformedRequest, &msg);
112 log_request_response(&bp, &b, &pl).await;
113 return Json(&pl).into_response();
114 }
115 };
116
117 match joinserver::get(sender_id).await {
118 Ok(v) => v,
119 Err(_) => {
120 warn!("Unknown SenderID");
121 let msg = format!("Unknown SenderID: {}", sender_id);
122 let pl = bp.to_base_payload_result(backend::ResultCode::UnknownSender, &msg);
123 log_request_response(&bp, &b, &pl).await;
124 return Json(&pl).into_response();
125 }
126 }
127 } else if bp.sender_id.len() == 3 {
128 // NetID
129 let sender_id = match NetID::from_slice(&bp.sender_id) {
130 Ok(v) => v,
131 Err(e) => {
132 warn!(error = %e.full(), "Error decoding SenderID as NetID");
133 let msg = format!("Error decoding SenderID: {}", e);
134 let pl = bp.to_base_payload_result(backend::ResultCode::MalformedRequest, &msg);
135 log_request_response(&bp, &b, &pl).await;
136 return Json(&pl).into_response();
137 }
138 };
139
140 match roaming::get(&sender_id).await {
141 Ok(v) => v,
142 Err(_) => {
143 warn!("Unknown SenderID");
144 let msg = format!("Unknown SenderID: {}", sender_id);
145 let pl = bp.to_base_payload_result(backend::ResultCode::UnknownSender, &msg);
146 log_request_response(&bp, &b, &pl).await;
147 return Json(&pl).into_response();
148 }
149 }
150 } else {
151 // Unknown size
152 warn!("Invalid SenderID length");
153 let pl = bp.to_base_payload_result(
154 backend::ResultCode::MalformedRequest,
155 "Invalid SenderID length",
156 );
157 log_request_response(&bp, &b, &pl).await;

Callers 1

handle_requestFunction · 0.85

Calls 9

log_request_responseFunction · 0.85
handle_async_ansFunction · 0.85
handle_pr_start_reqFunction · 0.85
handle_pr_stop_reqFunction · 0.85
handle_xmit_data_reqFunction · 0.85
handle_home_ns_reqFunction · 0.85
is_answerMethod · 0.80
getFunction · 0.50

Tested by

no test coverage detected