Thanks Günther, please check.
bool *is_data_outstanding);
/* The following definitions come from rpc_server/srv_spoolss_nt.c */
+void srv_spoolss_cleanup(void);
void do_drv_upgrade_printer(struct messaging_context *msg,
void *private_data,
return true;
}
+void srv_spoolss_cleanup(void)
+{
+ struct printer_session_counter *session_counter;
+
+ for (session_counter = counter_list;
+ session_counter != NULL;
+ session_counter = counter_list) {
+ DLIST_REMOVE(counter_list, session_counter);
+ TALLOC_FREE(session_counter);
+ }
+}
+
/**********************************************************************
callback to receive a MSG_PRINTER_DRVUPGRADE message and interate
over all printers, upgrading ones as necessary
return nt_printing_tdb_migrate(msg_ctx);
}
+static bool spoolss_shutdown_cb(void *ptr)
+{
+ srv_spoolss_cleanup();
+
+ return true;
+}
+
/****************************************************************************
main program.
****************************************************************************/
* can't register it twice.
*/
spoolss_cb.init = spoolss_init_cb;
- spoolss_cb.shutdown = NULL;
+ spoolss_cb.shutdown = spoolss_shutdown_cb;
spoolss_cb.private_data = smbd_server_conn->msg_ctx;
/* Spoolss depends on a winreg pipe, so start it first. */