struct server_connection *conn;
struct ioloop *ioloop;
string_t *cmd;
- const char *error;
+ const char *p, *error;
server = p_new(ctx->ctx.pool, struct doveadm_server, 1);
server->name = p_strdup(ctx->ctx.pool, target);
+ p = strrchr(server->name, ':');
+ server->hostname = p == NULL ? server->name :
+ p_strdup_until(ctx->ctx.pool, server->name, p);
if (ssl) {
if (dsync_init_ssl_ctx(ctx, mail_set, &error) < 0) {
*error_r = t_strdup_printf(
doveadm_server_get(struct doveadm_mail_cmd_context *ctx, const char *name)
{
struct doveadm_server *server;
+ const char *p;
char *dup_name;
if (!hash_table_is_created(servers)) {
if (server == NULL) {
server = p_new(server_pool, struct doveadm_server, 1);
server->name = dup_name = p_strdup(server_pool, name);
+ p = strrchr(server->name, ':');
+ server->hostname = p == NULL ? server->name :
+ p_strdup_until(server_pool, server->name, p);
+
p_array_init(&server->connections, server_pool,
ctx->set->doveadm_worker_count);
p_array_init(&server->queue, server_pool,
extern struct doveadm_print_vfuncs doveadm_print_server_vfuncs;
struct doveadm_server {
+ /* host:port */
const char *name;
+ /* host only */
+ const char *hostname;
struct ssl_iostream_context *ssl_ctx;
ARRAY(struct server_connection *) connections;
static int server_connection_ssl_handshaked(const char **error_r, void *context)
{
struct server_connection *conn = context;
- const char *host, *p;
- host = conn->server->name;
- p = strrchr(host, ':');
- if (p != NULL)
- host = t_strdup_until(host, p);
-
- if (ssl_iostream_check_cert_validity(conn->ssl_iostream, host, error_r) < 0)
+ if (ssl_iostream_check_cert_validity(conn->ssl_iostream,
+ conn->server->hostname,
+ error_r) < 0)
return -1;
if (doveadm_debug)
i_debug("%s: SSL handshake successful", conn->server->name);
ssl_set.verbose_invalid_cert = TRUE;
if (io_stream_create_ssl_client(conn->server->ssl_ctx,
- conn->server->name, &ssl_set,
+ conn->server->hostname, &ssl_set,
&conn->input, &conn->output,
&conn->ssl_iostream, &error) < 0) {
i_error("Couldn't initialize SSL client: %s", error);