diff --git a/mesh/config-server.c b/mesh/config-server.c
index 4710ede..8a88645 100644
--- a/mesh/config-server.c
+++ b/mesh/config-server.c
uint16_t ele_addr;
uint8_t ele_idx;
struct mesh_publication pub;
-
- int n;
+ int m, n;
if (mesh_opcode_get(data, len, &opcode, &n)) {
len -= n;
if (!node)
return true;
+ n = 0;
+
switch (opcode & ~OP_UNRELIABLE) {
default:
return false;
break;
case OP_CONFIG_MODEL_PUB_SET:
+
if (len != 11 && len != 13)
return true;
pub.app_idx = get_le16(data + 4);
pub.ttl = data[6];
pub.period = data[7];
- n = (data[7] & 0x3f);
+ m = (data[7] & 0x3f);
switch (data[7] >> 6) {
case 0:
- rl_printf("Period: %d ms\n", n * 100);
+ rl_printf("Period: %d ms\n", m * 100);
break;
case 2:
- n *= 10;
+ m *= 10;
/* fall through */
case 1:
- rl_printf("Period: %d sec\n", n);
+ rl_printf("Period: %d sec\n", m);
break;
case 3:
- rl_printf("Period: %d min\n", n * 10);
+ rl_printf("Period: %d min\n", m * 10);
break;
}
}
primary = node_get_primary(node);
- if (src != primary)
+ if (n && src != primary)
net_access_layer_send(node_get_default_ttl(node), primary,
- src, APP_IDX_DEV, msg, len);
+ src, APP_IDX_DEV, msg, n);
return true;
}