mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-05-29 05:54:15 +00:00
Add missing validation to avoid enqueue on fPort=0.
This commit is contained in:
parent
ce0df4b723
commit
0126286f75
@ -24,6 +24,18 @@ pub struct DeviceQueueItem {
|
|||||||
pub timeout_after: Option<DateTime<Utc>>,
|
pub timeout_after: Option<DateTime<Utc>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl DeviceQueueItem {
|
||||||
|
fn validate(&self) -> Result<(), Error> {
|
||||||
|
if self.f_port == 0 || self.f_port > 255 {
|
||||||
|
return Err(Error::Validation(
|
||||||
|
"FPort must be between 1 - 255".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Default for DeviceQueueItem {
|
impl Default for DeviceQueueItem {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let now = Utc::now();
|
let now = Utc::now();
|
||||||
@ -43,6 +55,8 @@ impl Default for DeviceQueueItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn enqueue_item(qi: DeviceQueueItem) -> Result<DeviceQueueItem, Error> {
|
pub async fn enqueue_item(qi: DeviceQueueItem) -> Result<DeviceQueueItem, Error> {
|
||||||
|
qi.validate()?;
|
||||||
|
|
||||||
let qi = task::spawn_blocking({
|
let qi = task::spawn_blocking({
|
||||||
move || -> Result<DeviceQueueItem, Error> {
|
move || -> Result<DeviceQueueItem, Error> {
|
||||||
let mut c = get_db_conn()?;
|
let mut c = get_db_conn()?;
|
||||||
@ -214,6 +228,23 @@ pub mod test {
|
|||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
// invalid fport
|
||||||
|
let qi = DeviceQueueItem {
|
||||||
|
dev_eui: d.dev_eui,
|
||||||
|
f_port: 0,
|
||||||
|
data: vec![0x01, 0x02, 0x03],
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
assert!(enqueue_item(qi).await.is_err());
|
||||||
|
|
||||||
|
let qi = DeviceQueueItem {
|
||||||
|
dev_eui: d.dev_eui,
|
||||||
|
f_port: 256,
|
||||||
|
data: vec![0x01, 0x02, 0x03],
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
assert!(enqueue_item(qi).await.is_err());
|
||||||
|
|
||||||
// create
|
// create
|
||||||
let mut qi = DeviceQueueItem {
|
let mut qi = DeviceQueueItem {
|
||||||
dev_eui: d.dev_eui,
|
dev_eui: d.dev_eui,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user