/* 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,
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;
}
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