diff --git a/mesh/remprv-server.c b/mesh/remprv-server.c
index 6a9efdd..927dbab 100644
--- a/mesh/remprv-server.c
+++ b/mesh/remprv-server.c
bool segmented = false;
uint32_t opcode;
uint8_t msg[69];
- uint8_t status;
+ uint8_t old_state, status;
uint16_t n;
if (app_idx != APP_IDX_DEV_LOCAL)
if (!prov || prov->node != node || prov->client != src)
return true;
+ old_state = prov->state;
prov->state = PB_REMOTE_STATE_LINK_CLOSING;
mesh_io_send_cancel(NULL, &pkt_filter, sizeof(pkt_filter));
send_prov_status(prov, PB_REM_ERR_SUCCESS);
- if (pkt[0] == 0x02) {
+ if (pkt[0] == 0x02 &&
+ old_state >= PB_REMOTE_STATE_LINK_ACTIVE) {
msg[0] = PROV_FAILED;
msg[1] = PROV_ERR_CANT_ASSIGN_ADDR;
if (prov->nppi_proc == RPR_ADV)