aboutsummaryrefslogtreecommitdiffstats
path: root/src/server_register.c
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-19 00:01:18 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-19 00:01:18 +0100
commitf3648fefe040152bb1676d651ebf7d836cb8ac9e (patch)
treea656270416167c3a15e61f937c27093a7fb05bf0 /src/server_register.c
parent965db7e3243aecb02f7f57b4fe8dabe9ad50a697 (diff)
downloadBobinkCOpcUa-f3648fefe040152bb1676d651ebf7d836cb8ac9e.tar.gz
BobinkCOpcUa-f3648fefe040152bb1676d651ebf7d836cb8ac9e.zip
Refactor: reduce duplication and tighten helpers
- Remove redundant applicationUri log in print_application_description - Use UA_SECURITY_POLICY_NONE_URI macro instead of hardcoded string - Extract _s_register_with_lds / _s_deregister_from_lds helpers - Rename signal handler param 'sign' to 'sig' for consistency - Add INT_MIN/INT_MAX bounds check to config_require_int - Extract shared test helpers into tests/test_helpers.sh
Diffstat (limited to 'src/server_register.c')
-rw-r--r--src/server_register.c86
1 files changed, 47 insertions, 39 deletions
diff --git a/src/server_register.c b/src/server_register.c
index de333a5..b675e2f 100644
--- a/src/server_register.c
+++ b/src/server_register.c
@@ -24,7 +24,7 @@
volatile UA_Boolean g_running = true;
static void
-_s_stop_handler (int sign)
+_s_stop_handler (int sig)
{
g_running = false;
}
@@ -66,6 +66,40 @@ _s_make_lds_client_config (UA_ClientConfig *cc, const lds_client_params *p)
return UA_STATUSCODE_GOOD;
}
+/**
+ * Creates a fresh client config and registers with the LDS.
+ */
+static UA_StatusCode
+_s_register_with_lds (UA_Server *server, const lds_client_params *p,
+ const char *endpoint)
+{
+ UA_ClientConfig cc;
+ UA_StatusCode rv = _s_make_lds_client_config (&cc, p);
+ if (rv != UA_STATUSCODE_GOOD)
+ return rv;
+ UA_String url = UA_STRING_ALLOC (endpoint);
+ rv = UA_Server_registerDiscovery (server, &cc, url, UA_STRING_NULL);
+ UA_String_clear (&url);
+ return rv;
+}
+
+/**
+ * Creates a fresh client config and deregisters from the LDS.
+ */
+static UA_StatusCode
+_s_deregister_from_lds (UA_Server *server, const lds_client_params *p,
+ const char *endpoint)
+{
+ UA_ClientConfig cc;
+ UA_StatusCode rv = _s_make_lds_client_config (&cc, p);
+ if (rv != UA_STATUSCODE_GOOD)
+ return rv;
+ UA_String url = UA_STRING_ALLOC (endpoint);
+ rv = UA_Server_deregisterDiscovery (server, &cc, url);
+ UA_String_clear (&url);
+ return rv;
+}
+
/* ========================================================================
* Main
* ======================================================================== */
@@ -175,20 +209,7 @@ main (int argc, char **argv)
can periodically re-register with the LDS between iterations. */
UA_Server_run_startup (server);
- /* UA_Server_registerDiscovery consumes (clears) the client config,
- so _s_make_lds_client_config builds a fresh one for every call. */
- UA_ClientConfig client_config;
- retval = _s_make_lds_client_config (&client_config, &lds_params);
- if (retval != UA_STATUSCODE_GOOD)
- {
- UA_Server_run_shutdown (server);
- goto cleanup;
- }
-
- UA_String discovery_url = UA_STRING_ALLOC (discovery_endpoint);
- retval = UA_Server_registerDiscovery (server, &client_config, discovery_url,
- UA_STRING_NULL);
- UA_String_clear (&discovery_url);
+ retval = _s_register_with_lds (server, &lds_params, discovery_endpoint);
if (retval != UA_STATUSCODE_GOOD)
UA_LOG_WARNING (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,
"Initial register failed: %s",
@@ -205,36 +226,23 @@ main (int argc, char **argv)
time_t now = time (NULL);
if (now - last_register >= register_interval)
{
- retval = _s_make_lds_client_config (&client_config, &lds_params);
- if (retval == UA_STATUSCODE_GOOD)
- {
- UA_String rereg_url = UA_STRING_ALLOC (discovery_endpoint);
- retval = UA_Server_registerDiscovery (server, &client_config,
- rereg_url, UA_STRING_NULL);
- UA_String_clear (&rereg_url);
- if (retval != UA_STATUSCODE_GOOD)
- UA_LOG_WARNING (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,
- "Re-register failed: %s",
- UA_StatusCode_name (retval));
- }
+ retval
+ = _s_register_with_lds (server, &lds_params, discovery_endpoint);
+ if (retval != UA_STATUSCODE_GOOD)
+ UA_LOG_WARNING (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,
+ "Re-register failed: %s",
+ UA_StatusCode_name (retval));
last_register = now;
}
}
/* Deregister from the LDS before shutting down so the LDS removes
our entry immediately rather than waiting for the cleanup timeout. */
- retval = _s_make_lds_client_config (&client_config, &lds_params);
- if (retval == UA_STATUSCODE_GOOD)
- {
- UA_String dereg_url = UA_STRING_ALLOC (discovery_endpoint);
- retval
- = UA_Server_deregisterDiscovery (server, &client_config, dereg_url);
- UA_String_clear (&dereg_url);
- if (retval != UA_STATUSCODE_GOOD)
- UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,
- "Could not unregister from discovery server: %s",
- UA_StatusCode_name (retval));
- }
+ retval = _s_deregister_from_lds (server, &lds_params, discovery_endpoint);
+ if (retval != UA_STATUSCODE_GOOD)
+ UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,
+ "Could not unregister from discovery server: %s",
+ UA_StatusCode_name (retval));
UA_Server_run_shutdown (server);
rc = EXIT_SUCCESS;