@@ -2144,6 +2144,20 @@ multi_connection_established(struct multi_context *m, struct multi_instance *mi)
if (tls_authentication_status(mi->context.c2.tls_multi, 0)
== TLS_AUTHENTICATION_SUCCEEDED)
{
+ typedef enum client_connect_return
+ (*multi_client_connect_handler)
+ (struct multi_context *m, struct multi_instance *mi,
+ unsigned int *option_types_found);
+
+ multi_client_connect_handler handlers[] = {
+ multi_client_connect_source_ccd,
+ multi_client_connect_call_plugin_v1,
+ multi_client_connect_call_plugin_v2,
+ multi_client_connect_call_script,
+ multi_client_connect_mda,
+ NULL
+ };
+
unsigned int option_types_found = 0;
int cc_succeeded = true; /* client connect script status */
@@ -2152,35 +2166,9 @@ multi_connection_established(struct multi_context *m, struct multi_instance *mi)
multi_client_connect_early_setup(m, mi);
- ret = multi_client_connect_source_ccd(m, mi, &option_types_found);
- cc_succeeded = cc_check_return(&cc_succeeded_count, ret);
-
- if (cc_succeeded)
- {
- ret = multi_client_connect_call_plugin_v1(m, mi,
- &option_types_found);
- cc_succeeded = cc_check_return(&cc_succeeded_count, ret);
- }
-
- if (cc_succeeded)
- {
- ret = multi_client_connect_call_plugin_v2(m, mi,
- &option_types_found);
- cc_succeeded = cc_check_return(&cc_succeeded_count, ret);
- }
-
- /*
- * Check for client-connect script left by management interface client
- */
- if (cc_succeeded)
- {
- ret = multi_client_connect_call_script(m, mi, &option_types_found);
- cc_succeeded = cc_check_return(&cc_succeeded_count, ret);
- }
-
- if (cc_succeeded)
+ for (int i = 0; cc_succeeded && handlers[i]; i++)
{
- ret = multi_client_connect_mda(m, mi, &option_types_found);
+ ret = handlers[i](m, mi, &option_types_found);
cc_succeeded = cc_check_return(&cc_succeeded_count, ret);
}