master_send_reply(conn, &failure_reply, sizeof(failure_reply),
request->tag);
} else {
- /* the auth request is finished, we don't need it anymore */
- mech_request_free(client_conn, auth_request, request->id);
-
master_request = i_new(struct master_userdb_request, 1);
master_request->conn = conn;
master_request->tag = request->tag;
conn->refcount++;
userdb->lookup(auth_request->user, userdb_callback,
master_request);
+
+ /* the auth request is finished, we don't need it anymore */
+ mech_request_free(client_conn, auth_request, request->id);
}
}
client->to_reconnect = NULL;
}
- client->connect_notify_callback(client,
- auth_client_is_connected(client),
- client->connect_notify_context);
+ if (client->connect_notify_callback != NULL) {
+ client->connect_notify_callback(client,
+ auth_client_is_connected(client),
+ client->connect_notify_context);
+ }
}
conn->client->conn_waiting_handshake_count--;
update_available_auth_mechs(conn->client);
- if (auth_client_is_connected(conn->client)) {
+ if (conn->client->connect_notify_callback != NULL &&
+ auth_client_is_connected(conn->client)) {
conn->client->connect_notify_callback(conn->client, TRUE,
conn->client->connect_notify_context);
}
if (reconnect)
auth_client_connect_missing_servers(client);
- else {
+ else if (client->connect_notify_callback != NULL) {
client->connect_notify_callback(client,
auth_client_is_connected(client),
client->connect_notify_context);
/* Refuse to run as root - we should never need it and it's
dangerous with SSL. */
restrict_access_by_env(TRUE);
- sleep(5);
/* make sure we can't fork() */
restrict_process_size((unsigned int)-1, 1);
if (client == NULL)
i_fatal("Master sent reply with unknown tag %u", reply->tag);
+ client->master_tag = 0;
client->master_callback(client, reply->success);
+ client->master_callback = NULL;
hash_remove(master_requests, POINTER_CAST(reply->tag));
}
void master_request_abort(struct client *client)
{
+ hash_remove(master_requests, POINTER_CAST(client->master_tag));
+
client->master_tag = 0;
client->master_callback = NULL;
-
- hash_remove(master_requests, POINTER_CAST(client->master_tag));
}
void master_notify_finished(void)