]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
bugfixes
authorTimo Sirainen <tss@iki.fi>
Fri, 22 Aug 2003 03:34:03 +0000 (06:34 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 22 Aug 2003 03:34:03 +0000 (06:34 +0300)
--HG--
branch : HEAD

src/auth/auth-master-connection.c
src/lib-auth/auth-client.c
src/lib-auth/auth-server-connection.c
src/login-common/main.c
src/login-common/master.c

index b14f1d5c65ea612eb7076a9bc32a1d89ca96180b..d717895185021a87de5550b2e102c955edc1d4c8 100644 (file)
@@ -144,9 +144,6 @@ static void master_handle_request(struct auth_master_connection *conn,
                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;
@@ -154,6 +151,9 @@ static void master_handle_request(struct auth_master_connection *conn,
                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);
        }
 }
 
index e68c248f784c7ae00ae5c28778864979941b81cc..d9981f07bc3311f086b5c4effebe8105680b101b 100644 (file)
@@ -105,7 +105,9 @@ void auth_client_connect_missing_servers(struct auth_client *client)
                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);
+       }
 }
index 063d1719f6babf5876a08ccaed96ad9e8c6ffa99..6c19df5bbdeb60d187771b44f0615389f0af1112 100644 (file)
@@ -44,7 +44,8 @@ static void auth_handle_handshake(struct auth_server_connection *conn,
         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);
        }
@@ -187,7 +188,7 @@ void auth_server_connection_destroy(struct auth_server_connection *conn,
 
        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);
index e0f640a38a15d1f4580a868e739e9e8f874362c2..ca39d65eeea9bb6fdc1ca29b2760550372de76d9 100644 (file)
@@ -148,7 +148,6 @@ static void drop_privileges(const char *name)
        /* 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);
index 1b3b87c14f78932701f71c5cef6db4bda2326f2e..99d50fb1affbaad04b0a11209eded420ed9740eb 100644 (file)
@@ -29,7 +29,9 @@ static void request_handle(struct master_login_reply *reply)
        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));
 }
@@ -60,10 +62,10 @@ void master_request_login(struct client *client, master_callback_t *callback,
 
 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)