summaryrefslogtreecommitdiff
path: root/source3/printing/printing.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2010-08-16 13:53:10 +0200
committerAndreas Schneider <asn@samba.org>2010-08-16 14:02:19 +0200
commitd418f9f11abb5b5ed038acbaf5dbb2a656d39d87 (patch)
tree9db83e16fbcfa1fd64c5270252751f06bc13b976 /source3/printing/printing.c
parentdc2313d1e87b68a5d85be8443e377491f979ecbc (diff)
downloadsamba-d418f9f11abb5b5ed038acbaf5dbb2a656d39d87.tar.gz
samba-d418f9f11abb5b5ed038acbaf5dbb2a656d39d87.tar.bz2
samba-d418f9f11abb5b5ed038acbaf5dbb2a656d39d87.zip
s3-printing: Lift the use of smbd_server_fd from job_submit.
Signed-off-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/printing/printing.c')
-rw-r--r--source3/printing/printing.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 69191ef9a8..31b802d3fb 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) {