Thanks again @TotallyInformation for your assistance.
In the end, with a bit of luck and some more persistence I managed to find out the issue. Posting here in case anyone has the same issue and possibly so I can be warned that this is a bad idea and there's a better way.
In my code, I am listening on various URLs, binding as below:
RED.httpNode.get('/etc/:area?/:filetype.xml', function(req, res) {
This code only gets called once (at the point when NodeRED starts up) therefore the config values are from when the restart of NodeRED happens.
I fixed this (with the help of ChatGPT) by closing the HTTP connection as below whenever the flow is deployed.
node.on('close', function(removed, done) {
RED.httpNode._router.stack.forEach(function(route, i, routes) {
if (route.route && route.route.path === '/etc/:area?/:filetype.xml') {
routes.splice(i, 1);
}
});
done();
}
My config values are now updated when the flow restarts, as was my original goal.