s3-printing: cope with missing printers in print migration
authorAndrew Tridgell <tridge@samba.org>
Fri, 6 Aug 2010 03:06:42 +0000 (13:06 +1000)
committerGünther Deschner <gd@samba.org>
Fri, 6 Aug 2010 10:14:59 +0000 (12:14 +0200)
The printers database may be completely missing in a new install, and
we may have SECDESC entries for printers that have been removed. Don't
consider these fatal errors in the migration.

Signed-off-by: Günther Deschner <gd@samba.org>
source3/printing/nt_printing_migrate.c

index 1ee5578818c77ad7110ff63fefd57a57fee7f5b8..7e7db562ec47d64c73d88dc938bd68d8a9cee13f 100644 (file)
@@ -420,6 +420,10 @@ static NTSTATUS migrate_secdesc(TALLOC_CTX *mem_ctx,
                                            &hnd,
                                            &result);
        if (!NT_STATUS_IS_OK(status)) {
+               if (W_ERROR_EQUAL(WERR_INVALID_PRINTER_NAME, result)) {
+                       DEBUG(3, ("Ignoring missing printer %s\n", key_name));
+                       return NT_STATUS_OK;
+               }
                if (!W_ERROR_IS_OK(result)) {
                        status = werror_to_ntstatus(result);
                }
@@ -493,6 +497,12 @@ static NTSTATUS migrate_internal(TALLOC_CTX *mem_ctx,
        int rc;
 
        tdb = tdb_open_log(tdb_path, 0, TDB_DEFAULT, O_RDONLY, 0600);
+       if (tdb == NULL && errno == ENOENT) {
+               /* if we have no printers database then migration is
+                  considered successful */
+               DEBUG(4, ("No printers database to migrate in %s\n", tdb_path));
+               return NT_STATUS_OK;
+       }
        if (tdb == NULL) {
                DEBUG(2, ("Failed to open tdb file: %s\n", tdb_path));
                return NT_STATUS_NO_SUCH_FILE;