[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#729713: libcups2: fails to fetch ppd of ipp:// device



Hi Till,

Le dimanche, 5 janvier 2014, 13.12:31 Till Kamppeter a écrit :
> On 01/05/2014 12:45 PM, Didier 'OdyX' Raboud wrote:
> > Your proposed patch is functionally equivalent to disabling the
> > get-ppd- file-for-statically-configured-ipp-shared-queues.patch ,
> > which was introduced in 1.6.1-1 as a backport from upstream's fix
> > for http://cups.org/str.php?L4178
> > 
> > Till, as you wrote this patch, what do you think about this?
> > 
> > Apparently, http://cups.org/str.php?L4159 was related to this
> > problem
> > and got solved differently in 1.6.2, and now cups/util.c appears to
> > be redundant around this codeblock.
> > 
> > Till, can we remove this patch on all versions > 1.6.2 ?
>  
> Important is to check whether if you create a raw IPP queue pointing
> to a CUPS queue on a remote server that you get access to the options
> on the client (means that the client loads the PPD from the server).
> Please test this.

Actually, what I'm saying is that the patch adds a redundant block. See 
the attached abstract from util.c. In my reading, lines 26 to 41 (added 
by the patch) is redundant with lines 6 to 25 (upstream code).

>From that, I tend to think the patch can be safely removed, no?

Cheers,

OdyX
    if ((attr = ippFindAttribute(response, "device-uri",
                                 IPP_TAG_URI)) != NULL)
      device_uri = attr->values[0].string.text;

    if (device_uri &&
        (!strncmp(device_uri, "ipp://", 6) ||
         !strncmp(device_uri, "ipps://", 7) ||
         ((strstr(device_uri, "._ipp.") != NULL ||
           strstr(device_uri, "._ipps.") != NULL) &&
          !strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
    {
     /*
      * Statically-configured shared printer.
      */

      httpSeparateURI(HTTP_URI_CODING_ALL,
                      _httpResolveURI(device_uri, uri, sizeof(uri),
                                      _HTTP_RESOLVE_DEFAULT, NULL, NULL),
                      scheme, sizeof(scheme), username, sizeof(username),
		      host, hostsize, port, resource, resourcesize);
      ippDelete(response);

      return (1);
    }
    else if (device_uri &&
	     (!strncmp(device_uri, "ipp:", 4) != NULL ||
	      !strncmp(device_uri, "ipps:", 5) != NULL))
    {
     /*
      * Statically-configured IPP shared printer.
      */

      httpSeparateURI(HTTP_URI_CODING_ALL,
                      device_uri,
                      scheme, sizeof(scheme), username, sizeof(username),
		      host, hostsize, port, resource, resourcesize);
      ippDelete(response);

      return (1);
    }
    else if ((attr = ippFindAttribute(response, "member-uris",
                                      IPP_TAG_URI)) != NULL)
    {
     /*
      * Get the first actual printer name in the class...
      */

      for (i = 0; i < attr->num_values; i ++)
      {
	httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
	                scheme, sizeof(scheme), username, sizeof(username),
			host, hostsize, port, resource, resourcesize);
	if (!strncmp(resource, "/printers/", 10))
	{

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: