summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/printing/notify.c11
-rw-r--r--source3/smbd/connection.c5
-rw-r--r--source3/utils/smbcontrol.c17
3 files changed, 27 insertions, 6 deletions
diff --git a/source3/printing/notify.c b/source3/printing/notify.c
index 21e28d0ca7..1b2b7805e5 100644
--- a/source3/printing/notify.c
+++ b/source3/printing/notify.c
@@ -65,18 +65,17 @@ again:
/* Send message */
- tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
+ tdb = conn_tdb_ctx();
if (!tdb) {
DEBUG(3, ("Failed to open connections database in send_spoolss_notify2_msg\n"));
- return;
+ goto done;
}
+
+ message_send_all(tdb, MSG_PRINTER_NOTIFY2, buf, buflen, False, NULL);
- message_send_all(tdb, MSG_PRINTER_NOTIFY2, buf,
- buflen, False, NULL);
-
+done:
SAFE_FREE(buf);
- tdb_close(tdb);
}
static void send_notify_field_values(const char *printer_name, uint32 type,
diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c
index c9815dbf8c..b53ef9fb3f 100644
--- a/source3/smbd/connection.c
+++ b/source3/smbd/connection.c
@@ -29,6 +29,11 @@ static TDB_CONTEXT *tdb;
TDB_CONTEXT *conn_tdb_ctx(void)
{
+ if (!tdb) {
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
+ O_RDWR | O_CREAT, 0644);
+ }
+
return tdb;
}
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c
index 65519e8888..300e5479e5 100644
--- a/source3/utils/smbcontrol.c
+++ b/source3/utils/smbcontrol.c
@@ -223,6 +223,23 @@ static void register_all(void)
message_register(MSG_POOL_USAGE, pool_usage_cb);
}
+/* This guy is here so we can link printing/notify.c to the smbcontrol
+ binary without having to pull in tons of other crap. */
+
+TDB_CONTEXT *conn_tdb_ctx(void)
+{
+ static TDB_CONTEXT *tdb;
+
+ if (tdb)
+ return tdb;
+
+ tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
+
+ if (!tdb)
+ DEBUG(3, ("Failed to open connections database in send_spoolss_notify2_msg\n"));
+
+ return tdb;
+}
/****************************************************************************
do command