@@ -2145,6 +2145,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 */
@@ -2153,36 +2167,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);
}