The branch, master has been updated via 9cb3e4314b0 lib: Slightly simplify server_id_set_disconnected() via 581ebbcc312 smbd: Simplify share_mode_entry_do() via c2092cfc448 libnet: Initialize pointers via b9f903fbd56 libnet: Align a few integer types via 5acb37fd564 nsswitch: Fix a typo via 7f967589ea4 rpc_server: Use correct PRIu16 for printf of a uint16 via 8ee391bbd06 tevent: Remove single-use ev_str_list_[length|add] via b6191956899 lib: Open tdb files with O_CLOEXEC via 87a0a20417c rpc_server: Avoid a cast via d4e5ce90cf6 printing: Factor out remove_from_jobs_list() via 93a28a5f245 printing: Simplify pack_devicemode() via 4388ad2a900 lib: Fix a typo via 3f4d85f749c dbwrap_ctdb: Remove "tryonly" from fetch_locked_internal() via a41af25ebd4 dbwrap: Remove "db_context->try_fetch_locked()" fn pointer via 8089f5190cb dbwrap: Remove unused dbwrap_try_fetch_locked() from 292abd2884b s3: smbd: Fix bug (only in master) introduced by 60ddee64f6e6c178766325591e80d63a673ad111.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 9cb3e4314b00629391919d8f74080d0dfc1aae18 Author: Volker Lendecke <v...@samba.org> Date: Thu Dec 17 11:37:47 2020 +0100 lib: Slightly simplify server_id_set_disconnected() The NULL assert is not really required, it will crash nicely if that's not fulfilled. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Jun 4 17:34:06 UTC 2021 on sn-devel-184 commit 581ebbcc312ba88e02a3b2d9a4776d5e6db39135 Author: Volker Lendecke <v...@samba.org> Date: Thu Dec 17 12:36:42 2020 +0100 smbd: Simplify share_mode_entry_do() Looking at the logic of "ha[d|ve]_share_mode_entry" d->modified=true can only happen if we remove the last share mode entry . Make this more explicit, avoid booleans. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit c2092cfc4489ad245ffd40bb4865e64ee37fadc2 Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 29 13:41:42 2020 +0100 libnet: Initialize pointers Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit b9f903fbd564d98df32570e083c855464e8042a9 Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 29 13:41:24 2020 +0100 libnet: Align a few integer types Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 5acb37fd564804cd889c37b8ec610a1c6c1ef60c Author: Volker Lendecke <v...@samba.org> Date: Thu May 6 11:43:51 2021 +0200 nsswitch: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7f967589ea4a87536c7eb9d60f5df00b29e03600 Author: Volker Lendecke <v...@samba.org> Date: Mon May 3 14:59:13 2021 +0200 rpc_server: Use correct PRIu16 for printf of a uint16 Don't rely on correct casting Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8ee391bbd0610c376e914ddbf236dbd68d5f40cb Author: Volker Lendecke <v...@samba.org> Date: Mon May 3 22:03:47 2021 +0200 tevent: Remove single-use ev_str_list_[length|add] This also adds proper error checks, the previous code could (very theoretically) have leaked memory if an intermediate _add had failed. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit b6191956899d3a962dbddc19b39d509141774208 Author: Volker Lendecke <v...@samba.org> Date: Fri May 7 07:32:37 2021 +0200 lib: Open tdb files with O_CLOEXEC After an exec() the fd's don't make sense anymore Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 87a0a20417cbefaa913e29233280908c198e9fd1 Author: Volker Lendecke <v...@samba.org> Date: Thu May 13 20:24:09 2021 +0200 rpc_server: Avoid a cast Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d4e5ce90cf6f118c32dd71210889b76c5de28d63 Author: Volker Lendecke <v...@samba.org> Date: Thu May 13 20:08:30 2021 +0200 printing: Factor out remove_from_jobs_list() remove_from_jobs_changed() and remove_from_jobs_added() only differed by the keystr. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 93a28a5f2456bbcdd3104c251a019f1f4f354219 Author: Volker Lendecke <v...@samba.org> Date: Wed May 12 18:22:52 2021 +0200 printing: Simplify pack_devicemode() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 4388ad2a900a931770756e8c3cb2e61216722c92 Author: Volker Lendecke <v...@samba.org> Date: Fri May 7 11:13:51 2021 +0200 lib: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 3f4d85f749cd47cd7d1372ef400acc664f1c7840 Author: Volker Lendecke <v...@samba.org> Date: Mon Dec 21 15:37:21 2020 +0100 dbwrap_ctdb: Remove "tryonly" from fetch_locked_internal() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit a41af25ebd424184ceb300a181cbfca7a9eb014c Author: Volker Lendecke <v...@samba.org> Date: Mon Dec 21 14:40:47 2020 +0100 dbwrap: Remove "db_context->try_fetch_locked()" fn pointer Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8089f5190cb17d519f2dee27a74eccb5b8560e8a Author: Volker Lendecke <v...@samba.org> Date: Mon Dec 21 14:37:12 2020 +0100 dbwrap: Remove unused dbwrap_try_fetch_locked() Small simplification, this has not been used since 2014 when the notifyd went in. Can easily be added if needed again. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/audit_logging/audit_logging.c | 2 +- lib/dbwrap/dbwrap.c | 10 ----- lib/dbwrap/dbwrap.h | 3 -- lib/dbwrap/dbwrap_private.h | 3 -- lib/dbwrap/dbwrap_tdb.c | 15 -------- lib/tdb_wrap/tdb_wrap.c | 6 +++ lib/tevent/tevent.c | 18 ++++++++- lib/tevent/tevent_util.c | 30 --------------- lib/tevent/tevent_util.h | 2 - lib/util/server_id.c | 14 +++---- nsswitch/wb_common.c | 2 +- source3/lib/dbwrap/dbwrap_ctdb.c | 34 ++--------------- source3/libnet/libnet_dssync_passdb.c | 13 +++---- source3/locking/share_mode_lock.c | 20 ++++------ source3/printing/printing.c | 71 +++++++---------------------------- source3/rpc_server/rpc_sock_helper.c | 2 +- source3/rpc_server/srv_pipe_hnd.c | 2 +- 17 files changed, 63 insertions(+), 184 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/audit_logging/audit_logging.c b/lib/audit_logging/audit_logging.c index e21582a91d1..9fe2d3ba45d 100644 --- a/lib/audit_logging/audit_logging.c +++ b/lib/audit_logging/audit_logging.c @@ -908,7 +908,7 @@ int json_add_guid(struct json_object *object, /* * @brief Convert a JSON object into a string * - * Convert the jsom object into a string suitable for printing on a log line, + * Convert the json object into a string suitable for printing on a log line, * i.e. with no embedded line breaks. * * If the object is invalid it logs an error and returns NULL. diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c index 735ed169690..cc685a2fa69 100644 --- a/lib/dbwrap/dbwrap.c +++ b/lib/dbwrap/dbwrap.c @@ -266,16 +266,6 @@ struct db_record *dbwrap_fetch_locked(struct db_context *db, db->fetch_locked); } -struct db_record *dbwrap_try_fetch_locked(struct db_context *db, - TALLOC_CTX *mem_ctx, - TDB_DATA key) -{ - return dbwrap_fetch_locked_internal( - db, mem_ctx, key, - db->try_fetch_locked - ? db->try_fetch_locked : db->fetch_locked); -} - struct db_context *dbwrap_record_get_db(struct db_record *rec) { return rec->db; diff --git a/lib/dbwrap/dbwrap.h b/lib/dbwrap/dbwrap.h index 0069353fae5..9b8bf811ca6 100644 --- a/lib/dbwrap/dbwrap.h +++ b/lib/dbwrap/dbwrap.h @@ -74,9 +74,6 @@ NTSTATUS dbwrap_record_delete(struct db_record *rec); struct db_record *dbwrap_fetch_locked(struct db_context *db, TALLOC_CTX *mem_ctx, TDB_DATA key); -struct db_record *dbwrap_try_fetch_locked(struct db_context *db, - TALLOC_CTX *mem_ctx, - TDB_DATA key); struct db_context *dbwrap_record_get_db(struct db_record *rec); void dbwrap_lock_order_lock(const char *db_name, diff --git a/lib/dbwrap/dbwrap_private.h b/lib/dbwrap/dbwrap_private.h index 8a1f03c7bec..3ac5ebf97a1 100644 --- a/lib/dbwrap/dbwrap_private.h +++ b/lib/dbwrap/dbwrap_private.h @@ -40,9 +40,6 @@ struct db_context { struct db_record *(*fetch_locked)(struct db_context *db, TALLOC_CTX *mem_ctx, TDB_DATA key); - struct db_record *(*try_fetch_locked)(struct db_context *db, - TALLOC_CTX *mem_ctx, - TDB_DATA key); int (*traverse)(struct db_context *db, int (*f)(struct db_record *rec, void *private_data), diff --git a/lib/dbwrap/dbwrap_tdb.c b/lib/dbwrap/dbwrap_tdb.c index 74b895a7736..6cd95fa25ad 100644 --- a/lib/dbwrap/dbwrap_tdb.c +++ b/lib/dbwrap/dbwrap_tdb.c @@ -169,20 +169,6 @@ static struct db_record *db_tdb_fetch_locked( return db_tdb_fetch_locked_internal(db, ctx, mem_ctx, key); } -static struct db_record *db_tdb_try_fetch_locked( - struct db_context *db, TALLOC_CTX *mem_ctx, TDB_DATA key) -{ - struct db_tdb_ctx *ctx = talloc_get_type_abort(db->private_data, - struct db_tdb_ctx); - - db_tdb_log_key("Trying to lock", key); - if (tdb_chainlock_nonblock(ctx->wtdb->tdb, key) != 0) { - DEBUG(3, ("tdb_chainlock_nonblock failed\n")); - return NULL; - } - return db_tdb_fetch_locked_internal(db, ctx, mem_ctx, key); -} - static NTSTATUS db_tdb_do_locked(struct db_context *db, TDB_DATA key, void (*fn)(struct db_record *rec, TDB_DATA value, @@ -509,7 +495,6 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx, db_tdb->id.ino = st.st_ino; result->fetch_locked = db_tdb_fetch_locked; - result->try_fetch_locked = db_tdb_try_fetch_locked; result->do_locked = db_tdb_do_locked; result->traverse = db_tdb_traverse; result->traverse_read = db_tdb_traverse_read; diff --git a/lib/tdb_wrap/tdb_wrap.c b/lib/tdb_wrap/tdb_wrap.c index 864656f2047..49585aa0b9f 100644 --- a/lib/tdb_wrap/tdb_wrap.c +++ b/lib/tdb_wrap/tdb_wrap.c @@ -20,6 +20,7 @@ */ #include "replace.h" +#include "system/filesys.h" #include "lib/util/dlinklist.h" #include "lib/util/debug.h" #include "tdb_wrap.h" @@ -100,6 +101,11 @@ static struct tdb_wrap_private *tdb_wrap_private_open(TALLOC_CTX *mem_ctx, /* Doesn't fail, see talloc_pooled_object */ result->name = talloc_strdup(result, name); + /* + * TDB files don't make sense after execve() + */ + open_flags |= O_CLOEXEC; + result->tdb = tdb_open_ex(name, hash_size, tdb_flags, open_flags, mode, &lctx, NULL); if (result->tdb == NULL) { diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c index dbec1821e41..a94bb440b9b 100644 --- a/lib/tevent/tevent.c +++ b/lib/tevent/tevent.c @@ -166,14 +166,28 @@ const char **tevent_backend_list(TALLOC_CTX *mem_ctx) { const char **list = NULL; struct tevent_ops_list *e; + size_t idx = 0; tevent_backend_init(); for (e=tevent_backends;e;e=e->next) { - list = ev_str_list_add(list, e->name); + idx += 1; } - talloc_steal(mem_ctx, list); + list = talloc_zero_array(mem_ctx, const char *, idx+1); + if (list == NULL) { + return NULL; + } + + idx = 0; + for (e=tevent_backends;e;e=e->next) { + list[idx] = talloc_strdup(list, e->name); + if (list[idx] == NULL) { + TALLOC_FREE(list); + return NULL; + } + idx += 1; + } return list; } diff --git a/lib/tevent/tevent_util.c b/lib/tevent/tevent_util.c index 16af8f3b908..7519e118ab9 100644 --- a/lib/tevent/tevent_util.c +++ b/lib/tevent/tevent_util.c @@ -29,36 +29,6 @@ #include "tevent_util.h" #include <fcntl.h> -/** - return the number of elements in a string list -*/ -size_t ev_str_list_length(const char **list) -{ - size_t ret; - for (ret=0;list && list[ret];ret++) /* noop */ ; - return ret; -} - -/** - add an entry to a string list -*/ -const char **ev_str_list_add(const char **list, const char *s) -{ - size_t len = ev_str_list_length(list); - const char **ret; - - ret = talloc_realloc(NULL, list, const char *, len+2); - if (ret == NULL) return NULL; - - ret[len] = talloc_strdup(ret, s); - if (ret[len] == NULL) return NULL; - - ret[len+1] = NULL; - - return ret; -} - - /** Set a fd into blocking/nonblocking mode. Uses POSIX O_NONBLOCK if available, else diff --git a/lib/tevent/tevent_util.h b/lib/tevent/tevent_util.h index eef4a00f98b..128c231e25c 100644 --- a/lib/tevent/tevent_util.h +++ b/lib/tevent/tevent_util.h @@ -173,9 +173,7 @@ do { \ #endif /* _DLINKLIST_H */ -const char **ev_str_list_add(const char **list, const char *s); int ev_set_blocking(int fd, bool set); -size_t ev_str_list_length(const char **list); bool ev_set_close_on_exec(int fd); /* Defined here so we can build against older talloc versions that don't diff --git a/lib/util/server_id.c b/lib/util/server_id.c index e66c9791007..690b9ddfbdc 100644 --- a/lib/util/server_id.c +++ b/lib/util/server_id.c @@ -187,14 +187,12 @@ struct server_id server_id_from_string(uint32_t local_vnn, */ void server_id_set_disconnected(struct server_id *id) { - SMB_ASSERT(id != NULL); - - id->pid = UINT64_MAX; - id->task_id = UINT32_MAX; - id->vnn = NONCLUSTER_VNN; - id->unique_id = SERVERID_UNIQUE_ID_NOT_TO_VERIFY; - - return; + *id = (struct server_id) { + .pid = UINT64_MAX, + .task_id = UINT32_MAX, + .vnn = NONCLUSTER_VNN, + .unique_id = SERVERID_UNIQUE_ID_NOT_TO_VERIFY, + }; } /** diff --git a/nsswitch/wb_common.c b/nsswitch/wb_common.c index 151c666cf53..45c1969acc2 100644 --- a/nsswitch/wb_common.c +++ b/nsswitch/wb_common.c @@ -259,7 +259,7 @@ static int make_safe_fd(int fd) /** * @internal * - * @brief Check if we talk to the priviliged pipe which should be owned by root. + * @brief Check if we talk to the privileged pipe which should be owned by root. * * This checks if we have uid_wrapper running and if this is the case it will * allow one to connect to the winbind privileged pipe even it is not owned by root. diff --git a/source3/lib/dbwrap/dbwrap_ctdb.c b/source3/lib/dbwrap/dbwrap_ctdb.c index 9c9e05b9d77..0907089164a 100644 --- a/source3/lib/dbwrap/dbwrap_ctdb.c +++ b/source3/lib/dbwrap/dbwrap_ctdb.c @@ -1071,8 +1071,7 @@ static bool db_ctdb_can_use_local_copy(TDB_DATA ctdb_data, uint32_t my_vnn, static struct db_record *fetch_locked_internal(struct db_ctdb_ctx *ctx, TALLOC_CTX *mem_ctx, - TDB_DATA key, - bool tryonly) + TDB_DATA key) { struct db_record *result; struct db_ctdb_rec *crec; @@ -1129,9 +1128,7 @@ again: } GetTimeOfDay(&chainlock_start); - lockret = tryonly - ? tdb_chainlock_nonblock(ctx->wtdb->tdb, key) - : tdb_chainlock(ctx->wtdb->tdb, key); + lockret = tdb_chainlock(ctx->wtdb->tdb, key); chainlock_time += timeval_elapsed(&chainlock_start); if (lockret != 0) { @@ -1156,12 +1153,6 @@ again: tdb_chainunlock(ctx->wtdb->tdb, key); talloc_set_destructor(result, NULL); - if (tryonly && (migrate_attempts != 0)) { - DEBUG(5, ("record migrated away again\n")); - TALLOC_FREE(result); - return NULL; - } - migrate_attempts += 1; DEBUG(10, ("ctdb_data.dptr = %p, dmaster = %"PRIu32" " @@ -1261,25 +1252,7 @@ static struct db_record *db_ctdb_fetch_locked(struct db_context *db, return db_ctdb_fetch_locked_persistent(ctx, mem_ctx, key); } - return fetch_locked_internal(ctx, mem_ctx, key, false); -} - -static struct db_record *db_ctdb_try_fetch_locked(struct db_context *db, - TALLOC_CTX *mem_ctx, - TDB_DATA key) -{ - struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data, - struct db_ctdb_ctx); - - if (ctx->transaction != NULL) { - return db_ctdb_fetch_locked_transaction(ctx, mem_ctx, key); - } - - if (db->persistent) { - return db_ctdb_fetch_locked_persistent(ctx, mem_ctx, key); - } - - return fetch_locked_internal(ctx, mem_ctx, key, true); + return fetch_locked_internal(ctx, mem_ctx, key); } struct db_ctdb_parse_record_state { @@ -1988,7 +1961,6 @@ struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx, result->private_data = (void *)db_ctdb; result->fetch_locked = db_ctdb_fetch_locked; - result->try_fetch_locked = db_ctdb_try_fetch_locked; result->parse_record = db_ctdb_parse_record; result->parse_record_send = db_ctdb_parse_record_send; result->parse_record_recv = db_ctdb_parse_record_recv; diff --git a/source3/libnet/libnet_dssync_passdb.c b/source3/libnet/libnet_dssync_passdb.c index 4472a9c4b5f..7d5ef64e8f4 100644 --- a/source3/libnet/libnet_dssync_passdb.c +++ b/source3/libnet/libnet_dssync_passdb.c @@ -722,7 +722,7 @@ static struct drsuapi_DsReplicaAttribute *find_drsuapi_attr( const struct drsuapi_DsReplicaObjectListItemEx *cur, uint32_t attid) { - int i = 0; + uint32_t i = 0; for (i = 0; i < cur->object.attribute_ctr.num_attributes; i++) { struct drsuapi_DsReplicaAttribute *attr; @@ -1780,10 +1780,9 @@ static NTSTATUS parse_object(struct dssync_passdb *pctx, struct drsuapi_DsReplicaObjectListItemEx *cur) { NTSTATUS status = NT_STATUS_OK; - DATA_BLOB *blob; - int i = 0; - int a = 0; - struct drsuapi_DsReplicaAttribute *attr; + DATA_BLOB *blob = NULL; + uint32_t i = 0; + size_t a = 0; char *name = NULL; uint32_t sam_type = 0; @@ -1791,8 +1790,8 @@ static NTSTATUS parse_object(struct dssync_passdb *pctx, DEBUG(3, ("parsing object '%s'\n", cur->object.identifier->dn)); for (i=0; i < cur->object.attribute_ctr.num_attributes; i++) { - - attr = &cur->object.attribute_ctr.attributes[i]; + struct drsuapi_DsReplicaAttribute *attr = + &cur->object.attribute_ctr.attributes[i]; if (attr->value_ctr.num_values != 1) { continue; diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c index d8c5222d70a..7a091637c74 100644 --- a/source3/locking/share_mode_lock.c +++ b/source3/locking/share_mode_lock.c @@ -2170,7 +2170,6 @@ static bool share_mode_entry_do( bool modified = false; struct share_mode_entry e; uint8_t *e_ptr = NULL; - bool had_share_entries, have_share_entries; NTSTATUS status; bool ret = false; @@ -2182,8 +2181,6 @@ static bool share_mode_entry_do( } DBG_DEBUG("num_share_modes=%zu\n", ltdb->num_share_entries); - had_share_entries = (ltdb->num_share_entries != 0); - idx = share_mode_entry_find( ltdb->share_entries, ltdb->num_share_entries, @@ -2229,6 +2226,14 @@ static bool share_mode_entry_do( } ltdb->num_share_entries -= 1; + if (ltdb->num_share_entries == 0) { + /* + * Tell share_mode_lock_destructor() to delete + * the whole record + */ + d->modified = true; + } + if (DEBUGLEVEL>=10) { DBG_DEBUG("share_mode_entry:\n"); NDR_PRINT_DEBUG(share_mode_entry, &e); @@ -2260,15 +2265,6 @@ static bool share_mode_entry_do( goto done; } - have_share_entries = (ltdb->num_share_entries != 0); - if (had_share_entries != have_share_entries) { - /* - * Make share_mode_data_store do the right thing wrt - * possibly deleting the locking.tdb record - */ - d->modified = true; - } - ret = true; done: TALLOC_FREE(ltdb); diff --git a/source3/printing/printing.c b/source3/printing/printing.c index 982eb4f9cdd..499334df03f 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -168,7 +168,7 @@ static TDB_DATA print_key(uint32_t jobid, uint32_t *tmp) static int pack_devicemode(struct spoolss_DeviceMode *devmode, uint8_t *buf, int buflen) { enum ndr_err_code ndr_err; - DATA_BLOB blob; + DATA_BLOB blob = { .data = NULL }; int len = 0; if (devmode) { @@ -181,8 +181,6 @@ static int pack_devicemode(struct spoolss_DeviceMode *devmode, uint8_t *buf, int "error encoding spoolss_DeviceMode\n")); goto done; } - } else { - ZERO_STRUCT(blob); } len = tdb_pack(buf, buflen, "B", blob.length, blob.data); @@ -522,7 +520,8 @@ static bool add_to_jobs_list( Remove a jobid from the 'jobs changed' list. ***************************************************************************/ -static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) +static bool remove_from_jobs_list( + const char *keystr, const char *sharename, uint32_t jobid) { struct tdb_print_db *pdb = get_print_db_byname(sharename); TDB_DATA data, key; @@ -536,7 +535,7 @@ static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) ZERO_STRUCT(data); - key = string_tdb_data("INFO/jobs_changed"); + key = string_tdb_data(keystr); if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) != 0) goto out; @@ -571,9 +570,16 @@ static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) SAFE_FREE(data.dptr); release_print_db(pdb); if (ret) - DEBUG(10,("remove_from_jobs_changed: removed jobid %u\n", (unsigned int)jobid )); + DBG_DEBUG("removed jobid %"PRIu32"\n", jobid); else - DEBUG(10,("remove_from_jobs_changed: Failed to remove jobid %u\n", (unsigned int)jobid )); + DBG_DEBUG("Failed to remove jobid %"PRIu32"\n", jobid); + return ret; +} + +static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) +{ + bool ret = remove_from_jobs_list( + "INFO/jobs_changed", sharename, jobid); return ret; } @@ -1952,56 +1958,7 @@ bool print_job_get_name(TALLOC_CTX *mem_ctx, const char *sharename, uint32_t job static bool remove_from_jobs_added(const char* sharename, uint32_t jobid) { - struct tdb_print_db *pdb = get_print_db_byname(sharename); - TDB_DATA data, key; - size_t job_count, i; - bool ret = False; - bool gotlock = False; - - if (!pdb) { - return False; - } - - ZERO_STRUCT(data); - - key = string_tdb_data("INFO/jobs_added"); - - if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) != 0) - goto out; - - gotlock = True; - - data = tdb_fetch(pdb->tdb, key); - - if (data.dptr == NULL || data.dsize == 0 || (data.dsize % 4 != 0)) - goto out; - - job_count = data.dsize / 4; - for (i = 0; i < job_count; i++) { -- Samba Shared Repository