void qd_connection_manager_free(qd_connection_manager_t *cm) { if (!cm) return; qd_config_listener_t *cl = DEQ_HEAD(cm->config_listeners); while (cl) { DEQ_REMOVE_HEAD(cm->config_listeners); qd_server_config_free(&cl->configuration); qd_config_listener_free(cm, cl); cl = DEQ_HEAD(cm->config_listeners); } qd_config_connector_t *cc = DEQ_HEAD(cm->config_connectors); while (cc) { DEQ_REMOVE_HEAD(cm->config_connectors); qd_server_config_free(&cc->configuration); qd_config_connector_free(cm, cc); cc = DEQ_HEAD(cm->config_connectors); } qd_config_ssl_profile_t *sslp = DEQ_HEAD(cm->config_ssl_profiles); while (sslp) { qd_config_ssl_profile_free(cm, sslp); sslp = DEQ_HEAD(cm->config_ssl_profiles); } sys_mutex_free(cm->ssl_profile_lock); }
qd_config_connector_t *qd_dispatch_configure_connector(qd_dispatch_t *qd, qd_entity_t *entity) { qd_error_clear(); qd_connection_manager_t *cm = qd->connection_manager; qd_config_connector_t *cc = NEW(qd_config_connector_t); ZERO(cc); cc->is_connector = true; qd_config_ssl_profile_t *ssl_profile = 0; if (load_server_config(qd, &cc->configuration, entity, &ssl_profile) != QD_ERROR_NONE) { qd_log(cm->log_source, QD_LOG_ERROR, "Unable to create config connector: %s", qd_error_message()); qd_config_connector_free(qd->connection_manager, cc); return 0; } cc->ssl_profile = ssl_profile; DEQ_ITEM_INIT(cc); DEQ_INSERT_TAIL(cm->config_connectors, cc); qd_log(cm->log_source, QD_LOG_INFO, "Configured Connector: %s:%s proto=%s, role=%s %s%s", cc->configuration.host, cc->configuration.port, cc->configuration.protocol_family ? cc->configuration.protocol_family : "any", cc->configuration.role, cc->ssl_profile ? ", sslProfile=":"", cc->ssl_profile ? cc->ssl_profile->name:""); return cc; }
void qd_connection_manager_delete_connector(qd_dispatch_t *qd, void *impl) { qd_config_connector_t *cc = (qd_config_connector_t*)impl; if(cc) { DEQ_REMOVE(qd->connection_manager->config_connectors, cc); qd_config_connector_free(cc); } }