Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/guacamole-server/pull/154#discussion_r199992432
  
    --- Diff: src/protocols/rdp/guac_rdpdr/rdpdr_printer.c ---
    @@ -200,10 +180,43 @@ void guac_rdpdr_register_printer(guac_rdpdrPlugin* 
rdpdr) {
         /* Init device */
         device->rdpdr       = rdpdr;
         device->device_id   = id;
    -    device->device_name = "Guacamole Printer";
    +    device->device_name = printer_name;
    +    device->device_name_len = guac_utf8_strlen(device->device_name);
    +    device->device_type = RDPDR_DTYP_PRINT;
    +    device->dos_name = "PRN1\0\0\0\0";
    +    
    +    /* Set up device announce stream */
    +    int prt_name_len = (device->device_name_len + 1) * 2;
    +    device->device_announce_len = 44 + prt_name_len
    +            + GUAC_PRINTER_DRIVER_LENGTH;
    +    device->device_announce = Stream_New(NULL, 
device->device_announce_len);
    +    
    +    /* Write common information. */
    +    Stream_Write_UINT32(device->device_announce, device->device_type);
    +    Stream_Write_UINT32(device->device_announce, device->device_id);
    +    Stream_Write(device->device_announce, device->dos_name, 8);
    +    
    +    /* DeviceDataLength */
    +    Stream_Write_UINT32(device->device_announce, 24 +  prt_name_len + 
GUAC_PRINTER_DRIVER_LENGTH);
    +    
    +    /* Begin printer-specific information */
    +    Stream_Write_UINT32(device->device_announce,
    +              RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER
    +            | RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER); /* Printer 
flags */
    +    Stream_Write_UINT32(device->device_announce, 0); /* Reserved - must be 
0. */
    +    Stream_Write_UINT32(device->device_announce, 0); /* PnPName Length - 
ignored. */
    +    Stream_Write_UINT32(device->device_announce, 
GUAC_PRINTER_DRIVER_LENGTH);
    +    Stream_Write_UINT32(device->device_announce, prt_name_len);
    +    Stream_Write_UINT32(device->device_announce, 0); /* CachedFields 
length. */
    +    
    +    Stream_Write(device->device_announce, GUAC_PRINTER_DRIVER, 
GUAC_PRINTER_DRIVER_LENGTH);
    +    guac_rdp_utf8_to_utf16((const unsigned char*) device->device_name,
    +            device->device_name_len,
    --- End diff --
    
    +1'd.


---

Reply via email to