s3-spoolss: fix spoolss GetPrinterData behaviour
authorDavid Disseldorp <ddiss@suse.de>
Fri, 5 Nov 2010 14:24:22 +0000 (15:24 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 10 Nov 2010 14:23:22 +0000 (15:23 +0100)
Windows sends spoolss GetPrinterData requests with an offered buffer
size of zero, Model and TrayFormTable data is commonly requested in
this way.

Samba's GetPrinterData response for the above case includes the correct
error code (WERR_MORE_DATA), however the type field is set to REG_NONE.
This causes Windows (seen on XP and 2k3) to give up on the request.

If the type field is retained (not set to REG_NONE) when responding with
WERR_MORE_DATA, Windows reissues the GetPrinterData request with an
increased offered buffer size.

Signed-off-by: Günther Deschner <gd@samba.org>
source3/rpc_server/srv_spoolss_nt.c

index aafba01ef4f5c79a08f706485ea39da75d2accd7..c0f953bdf4ee6c8799aa299214d8f4a2683fadde 100644 (file)
@@ -9222,7 +9222,7 @@ WERROR _spoolss_GetPrinterDataEx(struct pipes_struct *p,
        }
 
  done:
-       *r->out.type    = SPOOLSS_BUFFER_OK(*r->out.type, REG_NONE);
+       /* retain type when returning WERR_MORE_DATA */
        r->out.data     = SPOOLSS_BUFFER_OK(r->out.data, r->out.data);
 
        return SPOOLSS_BUFFER_OK(WERR_OK, WERR_MORE_DATA);