The branch, master has been updated
       via  d418f9f... s3-printing: Lift the use of smbd_server_fd from 
job_submit.
      from  dc2313d... s3-param: also remove lp_update_encrypted from loadparm.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit d418f9f11abb5b5ed038acbaf5dbb2a656d39d87
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Aug 16 13:53:10 2010 +0200

    s3-printing: Lift the use of smbd_server_fd from job_submit.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/include/printing.h      |    3 ++-
 source3/printing/print_cups.c   |    9 +--------
 source3/printing/print_iprint.c |    9 +--------
 source3/printing/printing.c     |   14 ++++++++++++--
 4 files changed, 16 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/printing.h b/source3/include/printing.h
index 334b7a1..1aa4e38 100644
--- a/source3/include/printing.h
+++ b/source3/include/printing.h
@@ -39,6 +39,7 @@ struct printjob {
        fstring filename; /* the filename used to spool the file */
        fstring jobname; /* the job name given to us by the client */
        fstring user; /* the user who started the job */
+       fstring clientmachine; /* The client machine which started this job */
        fstring queuename; /* service number of printer for this job */
        struct spoolss_DeviceMode *devmode;
 };
@@ -82,7 +83,7 @@ extern struct printif iprint_printif;
 #ifndef PRINT_SPOOL_PREFIX
 #define PRINT_SPOOL_PREFIX "smbprn."
 #endif
-#define PRINT_DATABASE_VERSION 5
+#define PRINT_DATABASE_VERSION 6
 
 /* There can be this many printing tdb's open, plus any locked ones. */
 #define MAX_PRINT_DBS_OPEN 1
diff --git a/source3/printing/print_cups.c b/source3/printing/print_cups.c
index 2441cfc..a85fba8 100644
--- a/source3/printing/print_cups.c
+++ b/source3/printing/print_cups.c
@@ -912,7 +912,6 @@ static int cups_job_submit(int snum, struct printjob *pjob)
        ipp_attribute_t *attr_job_id = NULL;    /* IPP Attribute "job-id" */
        cups_lang_t     *language = NULL;       /* Default language */
        char            uri[HTTP_MAX_URI]; /* printer-uri attribute */
-       const char      *clientname = NULL;     /* hostname of client for 
job-originating-host attribute */
        char *new_jobname = NULL;
        int             num_options = 0;
        cups_option_t   *options = NULL;
@@ -923,7 +922,6 @@ static int cups_job_submit(int snum, struct printjob *pjob)
        char *filename = NULL;
        size_t size;
        uint32_t jobid = (uint32_t)-1;
-       char addr[INET6_ADDRSTRLEN];
 
        DEBUG(5,("cups_job_submit(%d, %p)\n", snum, pjob));
 
@@ -981,14 +979,9 @@ static int cups_job_submit(int snum, struct printjob *pjob)
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, 
"requesting-user-name",
                     NULL, user);
 
-       clientname = client_name(smbd_server_fd());
-       if (strcmp(clientname, "UNKNOWN") == 0) {
-               clientname = client_addr(smbd_server_fd(),addr,sizeof(addr));
-       }
-
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                     "job-originating-host-name", NULL,
-                     clientname);
+                    pjob->clientmachine);
 
        /* Get the jobid from the filename. */
        jobid = print_parse_jobid(pjob->filename);
diff --git a/source3/printing/print_iprint.c b/source3/printing/print_iprint.c
index 7532496..ea375da 100644
--- a/source3/printing/print_iprint.c
+++ b/source3/printing/print_iprint.c
@@ -731,8 +731,6 @@ static int iprint_job_submit(int snum, struct printjob 
*pjob)
        ipp_attribute_t *attr;          /* Current attribute */
        cups_lang_t     *language = NULL;       /* Default language */
        char            uri[HTTP_MAX_URI]; /* printer-uri attribute */
-       const char      *clientname = NULL;     /* hostname of client for 
job-originating-host attribute */
-       char addr[INET6_ADDRSTRLEN];
 
        DEBUG(5,("iprint_job_submit(%d, %p (%d))\n", snum, pjob, pjob->sysjob));
 
@@ -785,14 +783,9 @@ static int iprint_job_submit(int snum, struct printjob 
*pjob)
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, 
"requesting-user-name",
                     NULL, pjob->user);
 
-       clientname = client_name(smbd_server_fd());
-       if (strcmp(clientname, "UNKNOWN") == 0) {
-               clientname = client_addr(smbd_server_fd(),addr,sizeof(addr));
-       }
-       
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                     "job-originating-host-name", NULL,
-                    clientname);
+                    pjob->clientmachine);
 
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
                     pjob->jobname);
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 69191ef..31b802d 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -375,7 +375,7 @@ int unpack_pjob( uint8 *buf, int buflen, struct printjob 
*pjob )
        if ( !buf || !pjob )
                return -1;
 
-       len += tdb_unpack(buf+len, buflen-len, "dddddddddffff",
+       len += tdb_unpack(buf+len, buflen-len, "dddddddddfffff",
                                &pjpid,
                                &pjsysjob,
                                &pjfd,
@@ -388,6 +388,7 @@ int unpack_pjob( uint8 *buf, int buflen, struct printjob 
*pjob )
                                pjob->filename,
                                pjob->jobname,
                                pjob->user,
+                               pjob->clientmachine,
                                pjob->queuename);
 
        if ( len == -1 )
@@ -641,7 +642,7 @@ static bool pjob_store(struct tevent_context *ev,
        do {
                len = 0;
                buflen = newlen;
-               len += tdb_pack(buf+len, buflen-len, "dddddddddffff",
+               len += tdb_pack(buf+len, buflen-len, "dddddddddfffff",
                                (uint32)pjob->pid,
                                (uint32)pjob->sysjob,
                                (uint32)pjob->fd,
@@ -654,6 +655,7 @@ static bool pjob_store(struct tevent_context *ev,
                                pjob->filename,
                                pjob->jobname,
                                pjob->user,
+                               pjob->clientmachine,
                                pjob->queuename);
 
                len += pack_devicemode(pjob->devmode, buf+len, buflen-len);
@@ -2810,6 +2812,8 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, 
int snum,
        SMB_STRUCT_STAT sbuf;
        struct printif *current_printif = get_printer_fns( snum );
        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
+       const char *clientname;
+       char addr[INET6_ADDRSTRLEN];
 
        pjob = print_job_find(sharename, jobid);
 
@@ -2872,6 +2876,12 @@ NTSTATUS print_job_end(struct messaging_context 
*msg_ctx, int snum,
                return NT_STATUS_OK;
        }
 
+       clientname = client_name(smbd_server_fd());
+       if (strcmp(clientname, "UNKNOWN") == 0) {
+               clientname = client_addr(smbd_server_fd(),addr,sizeof(addr));
+       }
+       fstrcpy(pjob->clientmachine, clientname);
+
        ret = (*(current_printif->job_submit))(snum, pjob);
 
        if (ret) {


-- 
Samba Shared Repository

Reply via email to