Giter Site home page Giter Site logo

cloud-print-connector's Introduction

Google Cloud Print Connector

Note: After December 31, 2020, Google Cloud Print will no longer be supported. Learn more about your migration options.

Introduction

Share printers from your Windows, Linux, FreeBSD or OS X computer with ChromeOS and Android devices, using the Cloud Print Connector. The Connector is a purpose-built system process. It can share hundreds of printers on a powerful server, or one printer on a Raspberry Pi.

Lots of help can be found in the wiki.

Build Status

  • Linux/OSX: Build Status

  • FreeBSD: Build Status

License

Copyright 2015 Google Inc. All rights reserved.

Use of this source code is governed by a BSD-style license that can be found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd

cloud-print-connector's People

Contributors

agoode avatar akorobkin avatar alekseyshl avatar arastooz avatar dannikay avatar elitegreg avatar gabsource avatar itsmattl avatar jacobmarble avatar jay0lee avatar jkcdarunday avatar korylprince avatar mfly avatar pastarmovj avatar pendyala82 avatar sbeaufort avatar sbyer avatar sicklittlemonkey avatar stvnrhodes avatar swills avatar t-yuki avatar tokarlss avatar vitalybuka avatar zachbutler-goog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloud-print-connector's Issues

undefined: strings.Compare

I'm getting an error when I try to install cups-connector on Debian 8. Am I missing a library or some other dependency perhaps? I appreciate any pointers. I'd love to get this working!

$ go get github.com/google/cups-connector/...
# github.com/google/cups-connector/lib
go/src/github.com/google/cups-connector/lib/deephash.go:50: undefined: strings.Compare

Thank you.

Hard for clients to distinguish local vs. cloud printers

When running cups-connector with local_printing: true, clients like Chrome OS see a local and cloud version of their printer (assuming they're on same network as printer). However, it's difficult for the client to determine which of these is currently selected without going to the selection menu every time. Consider the following scenario:

  1. hplj200 is a cups printer shared by cups-connector and can printer both local and cloud.
  2. user is almost always on same LAN as cups-connector and so normally has hplj200 local printer selected automatically and never changes it.
  3. user travels but needs to print to hplj200 remotely. Since local hplj200 is not available, another printer like Google Docs is selected as the default after CTRL+P.
  4. user clicks Change... button and selects cloud version of hplj200 and is able to print via GCP.
  5. user returns to LAN so that hplj200 is local again.
  6. user is not aware that they are now printing via hplj200 cloud as it has become the default.

A few possible ways this could be solved (some outside scope of cups-connector):

  • Chrome clients can become intelligent enough to prefer local printer when available, otherwise use cloud printer. This would be a GCP client issue, not cups-connector. Not sure if GCP clients can establish that local and cloud versions of a printer are the same printer.
  • Chrome clients should label (icon or text) the type of printer that is already selected. Maybe a cloud icon for the cloud printers and a LAN icon for local printers. This is outside the scope of cups-connector.
  • cups-connector appends " (local)" to all local printers.

The last option is the most straightforward though it may not be the ideal solution.

I'll work on a patch that adds optional values to append to local and cloud printer names (default to off).

Net-SNMP library error when < 5.6

When building on Ubuntu Precise (net-snmp 5.4.3):

src/github.com/google/cups-connector/snmp/snmp.c: In function 'initialize':
src/github.com/google/cups-connector/snmp/snmp.c:24:48: error: 'NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES' undeclared (first use in this function)
src/github.com/google/cups-connector/snmp/snmp.c:24:48: note: each undeclared identifier is reported only once for each function it appears in

Add ability to shred print jobs

For privacy-sensitive customers, add the ability to shred print jobs after they have been processed. This should default to "off" because it takes extra time for every job.

No recovery from poor network connections

First off, thanks for writing this CUPS connector, it works perfectly with a decent network connection!

It looks like xmpp connections are being retried, but subsequent print jobs don't actually go though until the process is killed and restarted when network connections are spotty.

Here's the nohup.out of the borked process:

E0804 04:40:13.548336    5595 connector.go:32] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
E0804 04:40:33.219619    5595 connector.go:74] Ready to rock as proxy 'pi'
Ready to rock as proxy 'pi'
E0804 06:46:27.466277    5595 xmpp.go:130] XMPP conversation died; restarting
E0804 18:41:57.646329    5595 xmpp.go:130] XMPP conversation died; restarting
E0805 01:39:26.423607    5595 xmpp.go:130] XMPP conversation died; restarting
E0806 10:21:02.550903    5595 xmpp.go:130] XMPP conversation died; restarting
F0806 10:21:22.582713    5595 xmpp.go:132] Failed to keep XMPP conversation alive: While starting XMPP, failed to get access token (password): Post https://accounts.google.com/o/oauth2/token: dial tcp: lookup accounts.google.com: no such host
goroutine 18 [running]:
github.com/golang/glog.stacks(0x489400, 0x0, 0x0, 0x0)
    /home/pi/go/src/github.com/golang/glog/glog.go:769 +0xdc
github.com/golang/glog.(*loggingT).output(0x4852f8, 0x3, 0x96582b40, 0x45920a, 0x7, 0x84, 0x0)
    /home/pi/go/src/github.com/golang/glog/glog.go:720 +0x2bc
github.com/golang/glog.(*loggingT).printf(0x4852f8, 0x3, 0x35fad8, 0x2a, 0x9689bf74, 0x1, 0x1)
    /home/pi/go/src/github.com/golang/glog/glog.go:655 +0x1e8
github.com/golang/glog.Fatalf(0x35fad8, 0x2a, 0x9689bf74, 0x1, 0x1)
    /home/pi/go/src/github.com/golang/glog/glog.go:1148 +0x54
github.com/google/cups-connector/xmpp.(*XMPP).keepXMPPAlive(0x965921e0)
    /home/pi/go/src/github.com/google/cups-connector/xmpp/xmpp.go:132 +0x208
created by github.com/google/cups-connector/xmpp.(*XMPP).startXMPP
    /home/pi/go/src/github.com/google/cups-connector/xmpp/xmpp.go:113 +0x2a4

For now, I'm using a cronjob that kick-restarts connector every hour.

https://www.google.com/cloudprint/list call failed: Storage timeout.

I'm trying to setup cups-connector on a Raspberry Pi v1.0B.

Port 443 is not blocked by my firewall and I'm running the latest version of golang (1.5.1) on raspbian 8.0 (jessie).

pi@raspberrypi ~ $ cat /etc/*release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l GNU/Linux
pi@raspberrypi ~ $ go version
go version go1.5.1 linux/arm

Local Config

I created a config for local-only with the following:

pi@raspberrypi ~ $ gocode/bin/connector-init 
Google Cloud Print CUPS Connector version DEV-linux
"Local printing" means that clients print directly to the connector via local subnet,
and that an Internet connection is neither necessary nor used.
Enable local printing?
y

"Cloud printing" means that clients can print from anywhere on the Internet,
and that printers must be explicitly shared with users.
Enable cloud printing?
n

The config file cups-connector.config.json is ready to rock.

Then I start the connector:

pi@raspberrypi ~ $ gocode/bin/connector
E0920 03:33:04.277863    2255 connector.go:33] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
E0920 03:33:04.738553    2255 connector.go:150] Ready to rock in local-only mode
Ready to rock in local-only mode

The printer shows up on chrome://devices/ but when I try to register it, I receive the following error:

Could not complete registration

An error has occured. Please check your printer and try again.

Cloud Print Config

If I create the config with the following options, enabling cloud print, I get the error stated in the topic.

(ids masked with xxx and ### respectively)

pi@raspberrypi ~ $ gocode/bin/connector-init 
Google Cloud Print CUPS Connector version DEV-linux
"Local printing" means that clients print directly to the connector via local subnet,
and that an Internet connection is neither necessary nor used.
Enable local printing?
y

"Cloud printing" means that clients can print from anywhere on the Internet,
and that printers must be explicitly shared with users.
Enable cloud printing?
y

Retain the user OAuth token to enable automatic sharing?
y        

User or group email address, or domain name, to share with:
[email protected]

Proxy name for this GCP CUPS Connector:
HP

Login to Google as the user that will own the printers, then visit this URL:

https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&redirect_uri=oob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudprint&state=state

After authenticating, paste the provided code here:
##############################################

Acquired OAuth credentials for user account
Acquired OAuth credentials for robot account

The config file cups-connector.config.json is ready to rock.
Keep it somewhere safe, as it contains an OAuth refresh token.

I start it and within 30 seconds it crashes with the following error:

pi@raspberrypi ~ $ gocode/bin/connector
E0920 03:29:48.769721    2200 connector.go:33] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
F0920 03:30:11.771645    2200 connector.go:131] https://www.google.com/cloudprint/list call failed: Storage timeout.
goroutine 1 [running]:
github.com/golang/glog.stacks(0x54c200, 0x0, 0x0, 0x0)
    /home/pi/gocode/src/github.com/golang/glog/glog.go:769 +0xc4
github.com/golang/glog.(*loggingT).output(0x538970, 0x3, 0x965445a0, 0x51028e, 0xc, 0x83, 0x0)
    /home/pi/gocode/src/github.com/golang/glog/glog.go:720 +0x28c
github.com/golang/glog.(*loggingT).printDepth(0x538970, 0x3, 0x1, 0x965d1db8, 0x1, 0x1)
    /home/pi/gocode/src/github.com/golang/glog/glog.go:646 +0x1b0
github.com/golang/glog.(*loggingT).print(0x538970, 0x3, 0x965d1db8, 0x1, 0x1)
    /home/pi/gocode/src/github.com/golang/glog/glog.go:637 +0x44
github.com/golang/glog.Fatal(0x965d1db8, 0x1, 0x1)
    /home/pi/gocode/src/github.com/golang/glog/glog.go:1128 +0x3c
main.main()
    /home/pi/gocode/src/github.com/google/cups-connector/connector/connector.go:131 +0x102c

I'm not sure where I'm going wrong or misunderstanding the configuration. Any help is appreciated.

README.md is not the place to give a tutorial on building from source

It's nice to give a few system-specific non-Go build dependency lists, e.g. yum/apt/brew commands for Fedora/RHEL, Debian/Ubuntu, but explaining how to install XCode is out of scope. Adding detailed instructions simply imposes a maintenance burden. This stuff is easy to find.

One of the joys of go is that go get is so simple, so just document the build deps (minimum version of Go and CUPS, required libraries) and then get on with the project-specific stuff. Even better, put it in scripts so it's right: does Go not have an equivalent of GNU autotools' ability to look for build deps and tell the user what's missing?

privet fails to compile on Ubuntu 14.04.3 LTS

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
$ uname -a
Linux shucks 3.13.0-61-generic #100-Ubuntu SMP Wed Jul 29 11:21:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ go get -u github.com/google/cups-connector/connector
# github.com/google/cups-connector/privet
In file included from go/src/github.com/google/cups-connector/privet/avahi.go:12:0:
avahi.h:9:34: fatal error: avahi-client/publish.h: No such file or directory
 #include <avahi-client/publish.h>
                                  ^
compilation terminated.

malloc(): smallbin double linked list corrupted

Found in the stderr log today:

E0602 03:39:39.404833 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
E0602 03:39:39.868477 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
E0602 03:40:43.846538 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
*** glibc detected *** /opt/cloudprint/bin/connector: malloc(): smallbin double linked list corrupted: 0x0000000001b75710 ***

connector.INFO around the same time:
I0602 03:38:47.883820 29875 printermanager.go:433] Received job 0df022cb-3d66-448b-df52-07ea77ed24c6
I0602 03:38:48.165975 29875 printermanager.go:410] Downloaded job 0df022cb-3d66-448b-df52-07ea77ed24c6 in 186.474687ms
I0602 03:38:48.532184 29875 printermanager.go:470] Submitted GCP job 0df022cb-3d66-448b-df52-07ea77ed24c6 as CUPS job 508654
I0602 03:38:50.380358 29875 printermanager.go:508] Job 0df022cb-3d66-448b-df52-07ea77ed24c6 status is now: PROCESSING/IN_PROGRESS
I0602 03:38:52.047503 29875 printermanager.go:508] Job 0df022cb-3d66-448b-df52-07ea77ed24c6 status is now: COMPLETED/DONE
I0602 03:39:20.035050 29875 printermanager.go:433] Received job 6b2d3403-6d5b-228f-f8b2-b49e920a1d46
I0602 03:39:20.310799 29875 printermanager.go:410] Downloaded job 6b2d3403-6d5b-228f-f8b2-b49e920a1d46 in 187.653548ms
I0602 03:39:20.686809 29875 printermanager.go:470] Submitted GCP job 6b2d3403-6d5b-228f-f8b2-b49e920a1d46 as CUPS job 508657
I0602 03:39:22.247684 29875 printermanager.go:508] Job 6b2d3403-6d5b-228f-f8b2-b49e920a1d46 status is now: PROCESSING/IN_PROGRESS
I0602 03:39:23.219372 29875 printermanager.go:508] Job 6b2d3403-6d5b-228f-f8b2-b49e920a1d46 status is now: COMPLETED/DONE
E0602 03:39:39.404833 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
I0602 03:39:39.416239 29875 printermanager.go:508] Job b7fa2e06-fe30-77ee-367a-f3b8537f59f1 status is now: COMPLETED/DONE
E0602 03:39:39.868477 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
I0602 03:39:39.868516 29875 printermanager.go:508] Job 2915843f-240a-63da-beef-9730ee3ef8cc status is now: PROCESSING/IN_PROGRESS
E0602 03:40:43.846538 29875 printermanager.go:506] https://www.google.com/cloudprint/control call failed: Unknown job id.
I0602 03:40:43.846586 29875 printermanager.go:508] Job 2915843f-240a-63da-beef-9730ee3ef8cc status is now: COMPLETED/DONE
I0602 03:40:46.885124 29875 printermanager.go:433] Received job 793204cf-8041-a78f-c1c2-4976f25563a4
I0602 03:40:47.179649 29875 printermanager.go:410] Downloaded job 793204cf-8041-a78f-c1c2-4976f25563a4 in 202.525614ms

4097 Error

I've made some progress - Go and cups-connector are installed and seem to be working nicely. CUPS is installed and I've configured several printers.

But I am getting the following error message:

trogers@debian:~$ connector
E0914 23:30:21.437047    8860 connector.go:33] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
E0914 23:30:24.203739    8860 connector.go:119] Ready to rock as proxy 'OHS-CloudPrint'
Ready to rock as proxy 'OHS-CloudPrint'
E0914 23:31:24.221903    8860 printermanager.go:207] Sync failed while calling GetPrinters(): Failed to call cupsDoRequest() [IPP_OP_CUPS_GET_PRINTERS]: Failed to connect to CUPS server /var/run/cups/cups.sock:631 because 4097 Error in the pull function.

Any suggestions?

Thanks again.

Need appropriate systemd service file

Something like this should do it:

/etc/systemd/system/gcp.service

[Unit]
Description=Google Cloud Print CUPS Connector
After=printer.target

[Service]
ExecStart=/opt/gcp_cups_connector/gcp-cups-connector -config-filename /etc/gcp_cups_connector/cups-connector.config.json
Restart=on-abort
User=gcp
Group=gcp

[Install]
WantedBy=multi-user.target

There are few assumptions here:

  1. system user/group "gcp" exists
  2. gcp-cups-connector is located at /opt/gcp_cups_connector/gcp-cups-connector
  3. gcp user has execute rights to /opt/gcp_cups_connector/gcp-cups-connector
  4. cups-connector.config.json is located at /etc/gcp_cups_connector/cups-connector.config.json
  5. gcp user has read rights to /etc/gcp_cups_connector/cups-connector.config.json

Segmentation fault for gcp-cups-connector on Raspbian

I try to install gcp-cups-connector on Raspbian with Debian Jessie.

$ uname -a
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l GNU/Linux

I followed your wiki instructions. The config file is created successfully. But running gcp-cups-connector comes up with the following:

$ /gcp-cups-connector
E1001 22:39:33.487409    2725 gcp-cups-connector.go:34] Google Cloud Print CUPS Connector version 2015.09.30-linux
Google Cloud Print CUPS Connector version 2015.09.30-linux
Segmentation fault

I then compile Go 1.4 and Go 1.5.1 as suggested and tried again. Same error. The logfiles don't give any further information.

I also tried to build gcp-cups-connector from source:

$ go get github.com/google/cups-connector/2015.09.30
package github.com/google/cups-connector/2015.09.30: cannot find package "github.com/google/cups-connector/2015.09.30" in any of:
        /home/pi/go1.5/src/github.com/google/cups-connector/2015.09.30 (from $GOROOT)
        /home/pi/go/src/github.com/google/cups-connector/2015.09.30 (from $GOPATH)

$ go get github.com/google/cups-connector/
can't load package: package github.com/google/cups-connector: no buildable Go source files in /home/pi/go1.5/src/github.com/google/cups-connector

Can you provide a hint what I could do or let me know, what else you need to know to hunt down that segmentation fault.

Feature request: multiple cups-conectors for one domain.

Our district has:

  • a cups server at each of our 50 schools.
  • one google admin domain - for assigning cloud-print printers to chromebooks by school.

Request:

  1. ability to prefix each cups-connector printer instance with a "site" name. e.g.
  • nkss-library
  • skss-library
  • aberdeen-library
  1. ability to white-list which printers are shared by cups-connector.
  • e.g. allow "library" printer & deny "principal" printer.

Thanks.

Support PPD keyword KMDuplex

Jobs via connector always print duplex on some Konica Minolta printers. This might be an easy fix by parsing CUPS sides attribute.

*OpenUI  *KMDuplex/Print Type: PickOne
*OrderDependency: 5 AnySetup *KMDuplex
*DefaultKMDuplex: Double
*KMDuplex Single/1-Sided:  "<< /Duplex false >> setpagedevice
 << /Layout 0 >> /KMOptions /ProcSet findresource /setKMoptions get exec"
*End
*KMDuplex Double/2-Sided:  "<< /Duplex true >> setpagedevice
 << /Layout 0 >> /KMOptions /ProcSet findresource /setKMoptions get exec"
*End
*KMDuplex Booklet/Booklet:  "<< /Duplex true >> setpagedevice
 << /Layout 1 >> /KMOptions /ProcSet findresource /setKMoptions get exec"
*End
*CloseUI: *KMDuplex

oauth2 failure

I get the following error:

$ connector-util -config-filename ~/.config/cups-connector.config.json -show-gcp-printer-status -printer-id bunyan
Google Cloud Print CUPS Connector version DEV-linux
F0920 14:08:40.664864   29142 connector-util.go:410] POST failure: Post https://www.google.com/cloudprint/printer: oauth2: token expired and refresh token is not set

I can't find anything about this in the documentation, and a quick search throws up only hints for developers writing similar code to this, and of options pertaining to OAuth in other Google Cloud Print connectors (but not this one). Sorry if I missed something, but otherwise, any suggestions?

Connector might flood the drive with gigabytes of logs on XMPP error

When the server side of the XMPP conversation fails, "connection reset by peer" is logged zillions of times:

W0314 07:40:56.883629    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer
W0314 07:40:56.903180    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer
W0314 07:40:56.903200    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer
W0314 07:40:56.903215    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer
W0314 07:40:56.903229    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer
W0314 07:40:56.903243    8815 xmpp.go:177] Failed to read the next start element: read tcp 64.233.177.125:443: connection reset by peer

another server:
W0319 15:20:32.449441    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449528    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449580    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449632    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449683    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449733    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449784    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449835    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449885    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449936    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.449987    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450037    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450085    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450136    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450185    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450236    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450284    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450335    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450385    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450435    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450487    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450536    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450636    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450689    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450739    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450789    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450839    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450891    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450942    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.450993    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451044    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451095    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451146    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451195    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451245    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451299    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451349    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451399    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451452    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451503    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451551    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451602    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451652    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451700    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer
W0319 15:20:32.451751    1691 xmpp.go:177] Failed to read the next start element: read tcp 74.125.28.125:443: connection reset by peer

"Pong not received" log message has no follow up action

When an XMPP ping goes unanswered, there is no action, only infinite retries. Expected behavior is to restart the XMPP conversation. Example log follows.

Log file created at: 2015/03/12 12:22:12
Running on machine: printserver
Binary: Built with gc go1.4.1 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0312 12:22:12.637194 8815 connector.go:29] Google Cloud Print CUPS Connector version 2015.03.04
E0312 12:22:15.046696 8815 connector.go:94] Ready to rock as proxy 'printserver'
W0314 07:28:58.874137 8815 xmpp.go:289] Pong not received after 5s
W0314 07:29:04.882344 8815 xmpp.go:289] Pong not received after 5s
W0314 07:29:10.883041 8815 xmpp.go:289] Pong not received after 5s
W0314 07:29:16.883774 8815 xmpp.go:289] Pong not received after 5s
W0314 07:29:22.884374 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:06.195910 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:12.196578 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:18.197254 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:24.197903 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:30.198564 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:36.199223 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:42.199918 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:48.200493 8815 xmpp.go:289] Pong not received after 5s
W0314 07:37:54.201104 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:00.201779 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:06.202475 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:12.203133 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:18.203822 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:24.204506 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:30.205234 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:36.205897 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:42.206557 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:48.207252 8815 xmpp.go:289] Pong not received after 5s
W0314 07:38:54.207904 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:00.208618 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:06.209224 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:12.209902 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:18.210607 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:24.211286 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:30.211975 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:36.212612 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:42.213192 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:48.213897 8815 xmpp.go:289] Pong not received after 5s
W0314 07:39:54.214578 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:00.215259 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:06.215968 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:12.216636 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:18.217329 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:24.217986 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:30.218643 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:36.219291 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:42.219953 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:48.220640 8815 xmpp.go:289] Pong not received after 5s
W0314 07:40:54.221302 8815 xmpp.go:289] Pong not received after 5s

connector fails to build against CUPS <1.7

go get github.com/google/cups-connector/connector

github.com/google/cups-connector/cups

could not determine kind of name for C.HTTP_ENCRYPTION_ALWAYS
could not determine kind of name for C.HTTP_ENCRYPTION_IF_REQUESTED
could not determine kind of name for C.HTTP_ENCRYPTION_NEVER
could not determine kind of name for C.HTTP_ENCRYPTION_REQUIRED
could not determine kind of name for C.HTTP_STATUS_NOT_MODIFIED
could not determine kind of name for C.HTTP_STATUS_OK
could not determine kind of name for C.IPP_OP_CUPS_GET_PRINTERS
could not determine kind of name for C.IPP_OP_GET_JOB_ATTRIBUTES
could not determine kind of name for C.IPP_STATUS_ERROR_NOT_FOUND
could not determine kind of name for C.IPP_STATUS_OK
could not determine kind of name for C.httpConnect2
could not determine kind of name for C.ippGetStatusCode
could not determine kind of name for C.ippValidateAttributes

Crashes with "Invalid pointer"

I sometimes see "glibc: Invalid pointer" errors in the stderr logs of the connector.
Also "double free", and "unexpected signal." Not sure if the logs are helpful at all.

Log file 1:

E0720 14:03:19.366714   23416 xmpp.go:130] XMPP conversation died; restarting
E0720 15:19:26.021436   23416 xmpp.go:130] XMPP conversation died; restarting
E0720 16:08:35.797074   23416 printermanager.go:520] https://www.google.com/cloudprint/control call failed: Unknown job id.
E0720 17:47:29.196677   23416 printermanager.go:446] https://www.google.com/cloudprint/control call failed: Can't modify the finished job.
*** glibc detected *** /opt/cloudprint/bin/connector*** glibc detected *** : /opt/cloudprint/bin/connectordouble free or corruption (out): *** glibc detected *** : 0x/opt/cloudprint/bin/connector00007f353401e290free(): invalid pointer ***
: 0x: 00007f34fc012e90free(): invalid pointer ***
: 0x00007f3540022350 ***
*** glibc detected *** /opt/cloudprint/bin/connector: double free or corruption (out): 0x00007f3550013200 ***
*** glibc detected *** /opt/cloudprint/bin/connector: double free or corruption (out): 0x00007f354c00f450 ***
*** glibc detected *** /opt/cloudprint/bin/connector: free(): invalid pointer: 0x00007f352c00b120 ***
*** glibc detected *** /opt/cloudprint/bin/connector: double free or corruption (out): 0x00007f34f4018610 ***
*** glibc detected *** /opt/cloudprint/bin/connector: free(): invalid pointer: 0x00007f3528017e30 ***

Log file 2:

E0722 16:03:43.561126    6011 connector.go:32] Google Cloud Print CUPS Connector version 2015.07.13-linux
Google Cloud Print CUPS Connector version 2015.07.13-linux
E0722 16:04:01.596943    6011 connector.go:107] Ready to rock as proxy 'printserver1'
Ready to rock as proxy 'printserver1'
*** glibc detected *** /opt/cloudprint/bin/connector: free(): invalid pointer: 0x00007feb280000d8 ***
fatal error: unexpected signal during runtime execution
[signal 0xb code=0x1 addr=0x7feb0000001a pc=0x7feb524a1ae9]

runtime stack:
runtime.gothrow(0x8368d0, 0x2a)
    /usr/local/go/src/runtime/panic.go:503 +0x8e fp=0x7feb4d1e1b90 sp=0x7feb4d1e1b78
runtime.sigpanic()
    /usr/local/go/src/runtime/sigpanic_unix.go:14 +0x5e fp=0x7feb4d1e1be0 sp=0x7feb4d1e1b90

goroutine 21606 [syscall, locked to thread]:
runtime.cgocall_errno(0x403420, 0xc2080ab5f8, 0x0)
    /usr/local/go/src/runtime/cgocall.go:130 +0xf5 fp=0xc2080ab5d8 sp=0xc2080ab5b0
github.com/google/cups-connector/cups._Cfunc_cupsDoRequest(0x7feb38002b90, 0x7feb28012c70, 0x695905, 0x0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/:94 +0x44 fp=0xc2080ab5f8 sp=0xc2080ab5d8
github.com/google/cups-connector/cups.(*cupsCore).doRequest(0xc2083d2990, 0x7feb28012c70, 0xc2080ab78c, 0x1, 0x1, 0x0, 0x0, 0x0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:269 +0x265 fp=0xc2080ab6f0 sp=0xc2080ab5f8
github.com/google/cups-connector/cups.(*cupsCore).doRequestWithRetry(0xc2083d2990, 0x7feb28012c70, 0xc2080ab78c, 0x1, 0x1, 0x7feb28000940, 0x0, 0x0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:254 +0xda fp=0xc2080ab748 sp=0xc2080ab6f0
github.com/google/cups-connector/cups.(*cupsCore).getJobAttributes(0xc2083d2990, 0x6176c, 0x7feb28000940, 0x0, 0x0, 0x0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:221 +0x1bd fp=0xc2080ab808 sp=0xc2080ab748
github.com/google/cups-connector/cups.(*CUPS).GetJobState(0xc2083b0c00, 0xc20006176c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/cups.go:260 +0x190 fp=0xc2080ab908 sp=0xc2080ab808
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073360, 0xc20006176c)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:499 +0xef fp=0xc2080abb40 sp=0xc2080ab908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073360)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc2080abfd0 sp=0xc2080abb40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080abfd8 sp=0xc2080abfd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 1 [chan receive, 252 minutes]:
runtime.gopark(0x43b510, 0xc20df28418, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209692ca0 sp=0xc209692c70
runtime.goparkunlock(0xc20df28418, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209692cc8 sp=0xc209692ca0
runtime.chanrecv(0x6b2a20, 0xc20df283c0, 0x0, 0x1, 0x0)
    /usr/local/go/src/runtime/chan.go:410 +0x452 fp=0xc209692d68 sp=0xc209692cc8
runtime.chanrecv1(0x6b2a20, 0xc20df283c0, 0x0)
    /usr/local/go/src/runtime/chan.go:311 +0x2b fp=0xc209692d98 sp=0xc209692d68
main.waitIndefinitely()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/connector/connector.go:121 +0x186 fp=0xc209692e30 sp=0xc209692d98
main.main()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/connector/connector.go:110 +0x152c fp=0xc209692f98 sp=0xc209692e30
runtime.main()
    /usr/local/go/src/runtime/proc.go:63 +0xf3 fp=0xc209692fe0 sp=0xc209692f98
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209692fe8 sp=0xc209692fe0

goroutine 2 [force gc (idle), 1 minutes]:
runtime.gopark(0x43b510, 0xb89790, 0x7d4f10, 0xf)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20801a798 sp=0xc20801a768
runtime.goparkunlock(0xb89790, 0x7d4f10, 0xf)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20801a7c0 sp=0xc20801a798
runtime.forcegchelper()
    /usr/local/go/src/runtime/proc.go:99 +0xce fp=0xc20801a7e0 sp=0xc20801a7c0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20801a7e8 sp=0xc20801a7e0
created by runtime.init·4
    /usr/local/go/src/runtime/proc.go:87 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x43b510, 0xb92428, 0x7c9fb0, 0xd)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20801df98 sp=0xc20801df68
runtime.goparkunlock(0xb92428, 0x7c9fb0, 0xd)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20801dfc0 sp=0xc20801df98
runtime.bgsweep()
    /usr/local/go/src/runtime/mgc0.go:98 +0xbc fp=0xc20801dfe0 sp=0xc20801dfc0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20801dfe8 sp=0xc20801dfe0
created by gc
    /usr/local/go/src/runtime/mgc0.c:1386

goroutine 4 [finalizer wait, 254 minutes]:
runtime.gopark(0x43b510, 0xb92420, 0x7d4750, 0xe)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208018f30 sp=0xc208018f00
runtime.goparkunlock(0xb92420, 0x7d4750, 0xe)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc208018f58 sp=0xc208018f30
runtime.runfinq()
    /usr/local/go/src/runtime/malloc.go:727 +0xba fp=0xc208018fe0 sp=0xc208018f58
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208018fe8 sp=0xc208018fe0
created by runtime.createfing
    /usr/local/go/src/runtime/malloc.go:707 +0x5e

goroutine 5 [chan receive]:
runtime.gopark(0x43b510, 0xc2080300b8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20801d698 sp=0xc20801d668
runtime.goparkunlock(0xc2080300b8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20801d6c0 sp=0xc20801d698
runtime.chanrecv(0x6b23c0, 0xc208030060, 0xc20801d7b8, 0x4bc101, 0xb80000)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20801d760 sp=0xc20801d6c0
runtime.chanrecv2(0x6b23c0, 0xc208030060, 0xc20801d7b8, 0x1)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20801d790 sp=0xc20801d760
github.com/golang/glog.(*loggingT).flushDaemon(0xb89ce0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/golang/glog/glog.go:879 +0x78 fp=0xc20801d7d8 sp=0xc20801d790
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20801d7e0 sp=0xc20801d7d8
created by github.com/golang/glog.init·1
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/golang/glog/glog.go:410 +0x2a7

goroutine 6 [syscall]:
runtime.notetsleepg(0xb899d8, 0x4d1e45, 0x0)
    /usr/local/go/src/runtime/lock_futex.go:201 +0x52 fp=0xc208019768 sp=0xc208019740
runtime.timerproc()
    /usr/local/go/src/runtime/time.go:207 +0xfa fp=0xc2080197e0 sp=0xc208019768
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080197e8 sp=0xc2080197e0
created by runtime.addtimerLocked
    /usr/local/go/src/runtime/time.go:113 +0x1ba

goroutine 17 [syscall, 254 minutes, locked to thread]:
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208052fe8 sp=0xc208052fe0

goroutine 7 [syscall, 254 minutes]:
runtime.notetsleepg(0xb93240, 0xffffffffffffffff, 0x1)
    /usr/local/go/src/runtime/lock_futex.go:201 +0x52 fp=0xc208017f68 sp=0xc208017f40
runtime.signal_recv(0x0)
    /usr/local/go/src/runtime/sigqueue.go:109 +0x135 fp=0xc208017fa0 sp=0xc208017f68
os/signal.loop()
    /usr/local/go/src/os/signal/signal_unix.go:21 +0x1f fp=0xc208017fe0 sp=0xc208017fa0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208017fe8 sp=0xc208017fe0
created by os/signal.init·1
    /usr/local/go/src/os/signal/signal_unix.go:27 +0x35

goroutine 15 [IO wait]:
runtime.gopark(0x416720, 0x7feb5311a3e0, 0x7b2c70, 0x7)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a048d08 sp=0xc20a048cd8
runtime.netpollblock(0x7feb5311a3b8, 0x72, 0xc212fff950)
    /usr/local/go/src/runtime/netpoll.go:347 +0x170 fp=0xc20a048d48 sp=0xc20a048d08
runtime.netpollWait(0x7feb5311a3b8, 0x72, 0x8)
    /usr/local/go/src/runtime/netpoll.go:150 +0x68 fp=0xc20a048d68 sp=0xc20a048d48
net.(*pollDesc).Wait(0xc20839c450, 0x72, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:84 +0x47 fp=0xc20a048d88 sp=0xc20a048d68
net.(*pollDesc).WaitRead(0xc20839c450, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:89 +0x43 fp=0xc20a048db0 sp=0xc20a048d88
net.(*netFD).Read(0xc20839c3f0, 0xc2083a8000, 0x400, 0x400, 0x0, 0x7feb53118dd8, 0xc212fff948)
    /usr/local/go/src/net/fd_unix.go:242 +0x40f fp=0xc20a048e50 sp=0xc20a048db0
net.(*conn).Read(0xc20802c0b0, 0xc2083a8000, 0x400, 0x400, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/net.go:121 +0xdc fp=0xc20a048e98 sp=0xc20a048e50
crypto/tls.(*block).readFromUntil(0xc208385380, 0x7feb5311a560, 0xc20802c0b0, 0x5, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:454 +0xe6 fp=0xc20a048f00 sp=0xc20a048e98
crypto/tls.(*Conn).readRecord(0xc208175080, 0x17, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:539 +0x2da fp=0xc20a049448 sp=0xc20a048f00
crypto/tls.(*Conn).Read(0xc208175080, 0xc2083af000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:904 +0x166 fp=0xc20a049530 sp=0xc20a049448
bufio.(*Reader).fill(0xc20839f140)
    /usr/local/go/src/bufio/bufio.go:97 +0x1ce fp=0xc20a0495d8 sp=0xc20a049530
bufio.(*Reader).ReadByte(0xc20839f140, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:196 +0x86 fp=0xc20a0495e8 sp=0xc20a0495d8
encoding/xml.(*Decoder).getc(0xc2083206e0, 0x0)
    /usr/local/go/src/encoding/xml/xml.go:852 +0xad fp=0xc20a049630 sp=0xc20a0495e8
encoding/xml.(*Decoder).rawToken(0xc2083206e0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/encoding/xml/xml.go:512 +0x147 fp=0xc20a049b90 sp=0xc20a049630
encoding/xml.(*Decoder).Token(0xc2083206e0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/encoding/xml/xml.go:247 +0x850 fp=0xc20a049da0 sp=0xc20a049b90
github.com/google/cups-connector/xmpp.readStartElement(0xc2083206e0, 0xc2080303c0, 0x0, 0x0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/internal-xmpp.go:513 +0x4b fp=0xc20a049e60 sp=0xc20a049da0
github.com/google/cups-connector/xmpp.(*internalXMPP).dispatchIncoming(0xc2083c9a90, 0xc2083dd020)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/internal-xmpp.go:165 +0x3a fp=0xc20a049fd0 sp=0xc20a049e60
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a049fd8 sp=0xc20a049fd0
created by github.com/google/cups-connector/xmpp.newInternalXMPP
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/internal-xmpp.go:115 +0x9ec

goroutine 16 [select]:
runtime.gopark(0x41b400, 0xc208d79ef0, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208d79ca8 sp=0xc208d79c78
runtime.selectgoImpl(0xc208d79ef0, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc208d79e40 sp=0xc208d79ca8
runtime.selectgo(0xc208d79ef0)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc208d79e60 sp=0xc208d79e40
github.com/google/cups-connector/xmpp.(*internalXMPP).pingPeriodically(0xc2083c9a90, 0x12a05f200, 0xf224d4a00, 0xc2083dd020)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/internal-xmpp.go:139 +0x31a fp=0xc208d79fc0 sp=0xc208d79e60
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208d79fc8 sp=0xc208d79fc0
created by github.com/google/cups-connector/xmpp.newInternalXMPP
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/internal-xmpp.go:116 +0xa2a

goroutine 18 [select, 254 minutes]:
runtime.gopark(0x41b400, 0xc208018740, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc2080184f8 sp=0xc2080184c8
runtime.selectgoImpl(0xc208018740, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc208018690 sp=0xc2080184f8
runtime.selectgo(0xc208018740)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc2080186b0 sp=0xc208018690
github.com/google/cups-connector/xmpp.(*XMPP).keepXMPPAlive(0xc208042100)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/xmpp.go:128 +0x2d2 fp=0xc2080187d8 sp=0xc2080186b0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080187e0 sp=0xc2080187d8
created by github.com/google/cups-connector/xmpp.(*XMPP).startXMPP
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/xmpp/xmpp.go:113 +0x2f1

goroutine 71681 [chan receive]:
runtime.gopark(0x43b510, 0xc20fc7e718, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208d77810 sp=0xc208d777e0
runtime.goparkunlock(0xc20fc7e718, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc208d77838 sp=0xc208d77810
runtime.chanrecv(0x6b23c0, 0xc20fc7e6c0, 0xc208d779e8, 0xc208ccf901, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc208d778d8 sp=0xc208d77838
runtime.chanrecv2(0x6b23c0, 0xc20fc7e6c0, 0xc208d779e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc208d77908 sp=0xc208d778d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc2110739a0, 0xc2000618e5)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc208d77b40 sp=0xc208d77908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc2110739a0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc208d77fd0 sp=0xc208d77b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208d77fd8 sp=0xc208d77fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 80395 [chan receive]:
runtime.gopark(0x43b510, 0xc209e55df8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a957810 sp=0xc20a9577e0
runtime.goparkunlock(0xc209e55df8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20a957838 sp=0xc20a957810
runtime.chanrecv(0x6b23c0, 0xc209e55da0, 0xc20a9579e8, 0xc208ccf001, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20a9578d8 sp=0xc20a957838
runtime.chanrecv2(0x6b23c0, 0xc209e55da0, 0xc20a9579e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20a957908 sp=0xc20a9578d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073b30, 0xc200061918)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20a957b40 sp=0xc20a957908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073b30)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20a957fd0 sp=0xc20a957b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a957fd8 sp=0xc20a957fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 86902 [chan receive]:
runtime.gopark(0x43b510, 0xc20a8cddf8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a951810 sp=0xc20a9517e0
runtime.goparkunlock(0xc20a8cddf8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20a951838 sp=0xc20a951810
runtime.chanrecv(0x6b23c0, 0xc20a8cdda0, 0xc20a9519e8, 0xc208ccf401, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20a9518d8 sp=0xc20a951838
runtime.chanrecv2(0x6b23c0, 0xc20a8cdda0, 0xc20a9519e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20a951908 sp=0xc20a9518d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc209d02780, 0xc20006193d)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20a951b40 sp=0xc20a951908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc209d02780)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20a951fd0 sp=0xc20a951b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a951fd8 sp=0xc20a951fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 82120 [IO wait]:
runtime.gopark(0x416720, 0x7feb5311a4a0, 0x7b2c70, 0x7)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208d75450 sp=0xc208d75420
runtime.netpollblock(0x7feb5311a478, 0x72, 0xc20ed032b0)
    /usr/local/go/src/runtime/netpoll.go:347 +0x170 fp=0xc208d75490 sp=0xc208d75450
runtime.netpollWait(0x7feb5311a478, 0x72, 0x8)
    /usr/local/go/src/runtime/netpoll.go:150 +0x68 fp=0xc208d754b0 sp=0xc208d75490
net.(*pollDesc).Wait(0xc209d99bf0, 0x72, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:84 +0x47 fp=0xc208d754d0 sp=0xc208d754b0
net.(*pollDesc).WaitRead(0xc209d99bf0, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:89 +0x43 fp=0xc208d754f8 sp=0xc208d754d0
net.(*netFD).Read(0xc209d99b90, 0xc208742000, 0x8000, 0x8000, 0x0, 0x7feb53118dd8, 0xc20ed03288)
    /usr/local/go/src/net/fd_unix.go:242 +0x40f fp=0xc208d75598 sp=0xc208d754f8
net.(*conn).Read(0xc210829e40, 0xc208742000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/net.go:121 +0xdc fp=0xc208d755e0 sp=0xc208d75598
crypto/tls.(*block).readFromUntil(0xc212aa55f0, 0x7feb5311a560, 0xc210829e40, 0x5, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:454 +0xe6 fp=0xc208d75648 sp=0xc208d755e0
crypto/tls.(*Conn).readRecord(0xc2135e6000, 0x17, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:539 +0x2da fp=0xc208d75b90 sp=0xc208d75648
crypto/tls.(*Conn).Read(0xc2135e6000, 0xc209bbb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:904 +0x166 fp=0xc208d75c78 sp=0xc208d75b90
net/http.noteEOFReader.Read(0x7feb5311f068, 0xc2135e6000, 0xc208363028, 0xc209bbb000, 0x1000, 0x1000, 0x70c120, 0x0, 0x0)
    /usr/local/go/src/net/http/transport.go:1270 +0x6e fp=0xc208d75cc8 sp=0xc208d75c78
net/http.(*noteEOFReader).Read(0xc210903180, 0xc209bbb000, 0x1000, 0x1000, 0xc208012000, 0x0, 0x0)
    <autogenerated>:125 +0xd4 fp=0xc208d75d18 sp=0xc208d75cc8
bufio.(*Reader).fill(0xc209636f60)
    /usr/local/go/src/bufio/bufio.go:97 +0x1ce fp=0xc208d75dc0 sp=0xc208d75d18
bufio.(*Reader).Peek(0xc209636f60, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:132 +0xf0 fp=0xc208d75dd0 sp=0xc208d75dc0
net/http.(*persistConn).readLoop(0xc208362fd0)
    /usr/local/go/src/net/http/transport.go:842 +0xa4 fp=0xc208d75fd8 sp=0xc208d75dd0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208d75fe0 sp=0xc208d75fd8
created by net/http.(*Transport).dialConn
    /usr/local/go/src/net/http/transport.go:660 +0xc9f

goroutine 91235 [select]:
runtime.gopark(0x41b400, 0xc20a819748, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a819550 sp=0xc20a819520
runtime.selectgoImpl(0xc20a819748, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a8196e8 sp=0xc20a819550
runtime.selectgo(0xc20a819748)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a819708 sp=0xc20a8196e8
github.com/google/cups-connector/cups.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:324 +0x105 fp=0xc20a8197e0 sp=0xc20a819708
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a8197e8 sp=0xc20a8197e0
created by github.com/google/cups-connector/cups.(*cupsCore).disconnect
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:331 +0xd2

goroutine 90257 [select]:
runtime.gopark(0x41b400, 0xc208055f40, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208055cb8 sp=0xc208055c88
runtime.selectgoImpl(0xc208055f40, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc208055e50 sp=0xc208055cb8
runtime.selectgo(0xc208055f40)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc208055e70 sp=0xc208055e50
net/http.(*persistConn).writeLoop(0xc209088580)
    /usr/local/go/src/net/http/transport.go:945 +0x41d fp=0xc208055fd8 sp=0xc208055e70
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208055fe0 sp=0xc208055fd8
created by net/http.(*Transport).dialConn
    /usr/local/go/src/net/http/transport.go:661 +0xcbc

goroutine 90248 [chan receive]:
runtime.gopark(0x43b510, 0xc209bbf198, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209dd5810 sp=0xc209dd57e0
runtime.goparkunlock(0xc209bbf198, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209dd5838 sp=0xc209dd5810
runtime.chanrecv(0x6b23c0, 0xc209bbf140, 0xc209dd59e8, 0xc208ccff01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc209dd58d8 sp=0xc209dd5838
runtime.chanrecv2(0x6b23c0, 0xc209bbf140, 0xc209dd59e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209dd5908 sp=0xc209dd58d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc2110734f0, 0xc200061953)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209dd5b40 sp=0xc209dd5908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc2110734f0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209dd5fd0 sp=0xc209dd5b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209dd5fd8 sp=0xc209dd5fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 90256 [IO wait]:
runtime.gopark(0x416720, 0x7feb53119ae0, 0x7b2c70, 0x7)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a953450 sp=0xc20a953420
runtime.netpollblock(0x7feb53119ab8, 0x72, 0xc21106f240)
    /usr/local/go/src/runtime/netpoll.go:347 +0x170 fp=0xc20a953490 sp=0xc20a953450
runtime.netpollWait(0x7feb53119ab8, 0x72, 0x8)
    /usr/local/go/src/runtime/netpoll.go:150 +0x68 fp=0xc20a9534b0 sp=0xc20a953490
net.(*pollDesc).Wait(0xc20a8ec4c0, 0x72, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:84 +0x47 fp=0xc20a9534d0 sp=0xc20a9534b0
net.(*pollDesc).WaitRead(0xc20a8ec4c0, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:89 +0x43 fp=0xc20a9534f8 sp=0xc20a9534d0
net.(*netFD).Read(0xc20a8ec460, 0xc20a2f7000, 0x1000, 0x1000, 0x0, 0x7feb53118dd8, 0xc21106f218)
    /usr/local/go/src/net/fd_unix.go:242 +0x40f fp=0xc20a953598 sp=0xc20a9534f8
net.(*conn).Read(0xc21108e690, 0xc20a2f7000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/net.go:121 +0xdc fp=0xc20a9535e0 sp=0xc20a953598
crypto/tls.(*block).readFromUntil(0xc20ca78600, 0x7feb5311a560, 0xc21108e690, 0x5, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:454 +0xe6 fp=0xc20a953648 sp=0xc20a9535e0
crypto/tls.(*Conn).readRecord(0xc2135e6580, 0x17, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:539 +0x2da fp=0xc20a953b90 sp=0xc20a953648
crypto/tls.(*Conn).Read(0xc2135e6580, 0xc20dfb4000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/local/go/src/crypto/tls/conn.go:904 +0x166 fp=0xc20a953c78 sp=0xc20a953b90
net/http.noteEOFReader.Read(0x7feb5311f068, 0xc2135e6580, 0xc2090885d8, 0xc20dfb4000, 0x1000, 0x1000, 0x70c120, 0x0, 0x0)
    /usr/local/go/src/net/http/transport.go:1270 +0x6e fp=0xc20a953cc8 sp=0xc20a953c78
net/http.(*noteEOFReader).Read(0xc20bfed480, 0xc20dfb4000, 0x1000, 0x1000, 0xc208012000, 0x0, 0x0)
    <autogenerated>:125 +0xd4 fp=0xc20a953d18 sp=0xc20a953cc8
bufio.(*Reader).fill(0xc209bbef00)
    /usr/local/go/src/bufio/bufio.go:97 +0x1ce fp=0xc20a953dc0 sp=0xc20a953d18
bufio.(*Reader).Peek(0xc209bbef00, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:132 +0xf0 fp=0xc20a953dd0 sp=0xc20a953dc0
net/http.(*persistConn).readLoop(0xc209088580)
    /usr/local/go/src/net/http/transport.go:842 +0xa4 fp=0xc20a953fd8 sp=0xc20a953dd0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a953fe0 sp=0xc20a953fd8
created by net/http.(*Transport).dialConn
    /usr/local/go/src/net/http/transport.go:660 +0xc9f

goroutine 10271 [chan receive]:
runtime.gopark(0x43b510, 0xc20ca74f58, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc2080a7810 sp=0xc2080a77e0
runtime.goparkunlock(0xc20ca74f58, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc2080a7838 sp=0xc2080a7810
runtime.chanrecv(0x6b23c0, 0xc20ca74f00, 0xc2080a79e8, 0xc208ccef01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc2080a78d8 sp=0xc2080a7838
runtime.chanrecv2(0x6b23c0, 0xc20ca74f00, 0xc2080a79e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc2080a7908 sp=0xc2080a78d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211072b90, 0xc200061673)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc2080a7b40 sp=0xc2080a7908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211072b90)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc2080a7fd0 sp=0xc2080a7b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080a7fd8 sp=0xc2080a7fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 10342 [chan receive]:
runtime.gopark(0x43b510, 0xc209bbf258, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc2080a9810 sp=0xc2080a97e0
runtime.goparkunlock(0xc209bbf258, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc2080a9838 sp=0xc2080a9810
runtime.chanrecv(0x6b23c0, 0xc209bbf200, 0xc2080a99e8, 0xc208ccfc01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc2080a98d8 sp=0xc2080a9838
runtime.chanrecv2(0x6b23c0, 0xc209bbf200, 0xc2080a99e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc2080a9908 sp=0xc2080a98d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211072d70, 0xc200061674)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc2080a9b40 sp=0xc2080a9908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211072d70)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc2080a9fd0 sp=0xc2080a9b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080a9fd8 sp=0xc2080a9fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 3323 [select]:
runtime.gopark(0x41b400, 0xc20a0e8f48, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a0e8ce8 sp=0xc20a0e8cb8
runtime.selectgoImpl(0xc20a0e8f48, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a0e8e80 sp=0xc20a0e8ce8
runtime.selectgo(0xc20a0e8f48)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a0e8ea0 sp=0xc20a0e8e80
github.com/google/cups-connector/manager.func·003()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:290 +0x264 fp=0xc20a0e8fe0 sp=0xc20a0e8ea0
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a0e8fe8 sp=0xc20a0e8fe0
created by github.com/google/cups-connector/manager.(*PrinterManager).listenXMPPNotifications
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:303 +0x8c

goroutine 22280 [chan receive]:
runtime.gopark(0x43b510, 0xc20d355eb8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209d05810 sp=0xc209d057e0
runtime.goparkunlock(0xc20d355eb8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209d05838 sp=0xc209d05810
runtime.chanrecv(0x6b23c0, 0xc20d355e60, 0xc209d059e8, 0xc208ccfa01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc209d058d8 sp=0xc209d05838
runtime.chanrecv2(0x6b23c0, 0xc20d355e60, 0xc209d059e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209d05908 sp=0xc209d058d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073d60, 0xc200061777)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209d05b40 sp=0xc209d05908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073d60)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209d05fd0 sp=0xc209d05b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209d05fd8 sp=0xc209d05fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 47545 [chan receive]:
runtime.gopark(0x43b510, 0xc20d355d38, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209d09810 sp=0xc209d097e0
runtime.goparkunlock(0xc20d355d38, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209d09838 sp=0xc209d09810
runtime.chanrecv(0x6b23c0, 0xc20d355ce0, 0xc209d099e8, 0xc208ccf201, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc209d098d8 sp=0xc209d09838
runtime.chanrecv2(0x6b23c0, 0xc20d355ce0, 0xc209d099e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209d09908 sp=0xc209d098d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc2110730e0, 0xc200061860)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209d09b40 sp=0xc209d09908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc2110730e0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209d09fd0 sp=0xc209d09b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209d09fd8 sp=0xc209d09fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 91239 [select]:
runtime.gopark(0x41b400, 0xc20a818f48, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a818d50 sp=0xc20a818d20
runtime.selectgoImpl(0xc20a818f48, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a818ee8 sp=0xc20a818d50
runtime.selectgo(0xc20a818f48)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a818f08 sp=0xc20a818ee8
github.com/google/cups-connector/cups.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:324 +0x105 fp=0xc20a818fe0 sp=0xc20a818f08
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a818fe8 sp=0xc20a818fe0
created by github.com/google/cups-connector/cups.(*cupsCore).disconnect
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:331 +0xd2

goroutine 72136 [chan receive]:
runtime.gopark(0x43b510, 0xc20a6a34f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20920d810 sp=0xc20920d7e0
runtime.goparkunlock(0xc20a6a34f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20920d838 sp=0xc20920d810
runtime.chanrecv(0x6b23c0, 0xc20a6a34a0, 0xc20920d9e8, 0xc208ccf501, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20920d8d8 sp=0xc20920d838
runtime.chanrecv2(0x6b23c0, 0xc20a6a34a0, 0xc20920d9e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20920d908 sp=0xc20920d8d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc209d02730, 0xc2000618ea)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20920db40 sp=0xc20920d908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc209d02730)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20920dfd0 sp=0xc20920db40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20920dfd8 sp=0xc20920dfd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 82121 [select]:
runtime.gopark(0x41b400, 0xc20804ef40, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20804ecb8 sp=0xc20804ec88
runtime.selectgoImpl(0xc20804ef40, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20804ee50 sp=0xc20804ecb8
runtime.selectgo(0xc20804ef40)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20804ee70 sp=0xc20804ee50
net/http.(*persistConn).writeLoop(0xc208362fd0)
    /usr/local/go/src/net/http/transport.go:945 +0x41d fp=0xc20804efd8 sp=0xc20804ee70
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20804efe0 sp=0xc20804efd8
created by net/http.(*Transport).dialConn
    /usr/local/go/src/net/http/transport.go:661 +0xcbc

goroutine 3326 [IO wait, 252 minutes]:
runtime.gopark(0x416720, 0x7feb53129408, 0x7b2c70, 0x7)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209193510 sp=0xc2091934e0
runtime.netpollblock(0x7feb531293e0, 0x72, 0xc21468f310)
    /usr/local/go/src/runtime/netpoll.go:347 +0x170 fp=0xc209193550 sp=0xc209193510
runtime.netpollWait(0x7feb531293e0, 0x72, 0x8)
    /usr/local/go/src/runtime/netpoll.go:150 +0x68 fp=0xc209193570 sp=0xc209193550
net.(*pollDesc).Wait(0xc20f2bad10, 0x72, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:84 +0x47 fp=0xc209193590 sp=0xc209193570
net.(*pollDesc).WaitRead(0xc20f2bad10, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:89 +0x43 fp=0xc2091935b8 sp=0xc209193590
net.(*netFD).accept(0xc20f2bacb0, 0x0, 0x7feb53118dd8, 0xc21468f278)
    /usr/local/go/src/net/fd_unix.go:419 +0x40b fp=0xc2091936b8 sp=0xc2091935b8
net.(*UnixListener).AcceptUnix(0xc20c1dffa0, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/unixsock_posix.go:282 +0x56 fp=0xc209193718 sp=0xc2091936b8
net.(*UnixListener).Accept(0xc20c1dffa0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/unixsock_posix.go:293 +0x4c fp=0xc209193748 sp=0xc209193718
github.com/google/cups-connector/monitor.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/monitor/monitor.go:59 +0x66 fp=0xc2091937e0 sp=0xc209193748
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2091937e8 sp=0xc2091937e0
created by github.com/google/cups-connector/monitor.(*Monitor).listen
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/monitor/monitor.go:71 +0x1fb

goroutine 83622 [chan receive]:
runtime.gopark(0x43b510, 0xc209755798, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc2080a5810 sp=0xc2080a57e0
runtime.goparkunlock(0xc209755798, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc2080a5838 sp=0xc2080a5810
runtime.chanrecv(0x6b23c0, 0xc209755740, 0xc2080a59e8, 0xc208ccf601, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc2080a58d8 sp=0xc2080a5838
runtime.chanrecv2(0x6b23c0, 0xc209755740, 0xc2080a59e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc2080a5908 sp=0xc2080a58d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc209d03f40, 0xc200061925)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc2080a5b40 sp=0xc2080a5908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc209d03f40)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc2080a5fd0 sp=0xc2080a5b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2080a5fd8 sp=0xc2080a5fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 91236 [select]:
runtime.gopark(0x41b400, 0xc20a81af48, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a81ad50 sp=0xc20a81ad20
runtime.selectgoImpl(0xc20a81af48, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a81aee8 sp=0xc20a81ad50
runtime.selectgo(0xc20a81af48)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a81af08 sp=0xc20a81aee8
github.com/google/cups-connector/cups.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:324 +0x105 fp=0xc20a81afe0 sp=0xc20a81af08
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a81afe8 sp=0xc20a81afe0
created by github.com/google/cups-connector/cups.(*cupsCore).disconnect
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:331 +0xd2

goroutine 41084 [chan receive]:
runtime.gopark(0x43b510, 0xc2122d24d8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209d07810 sp=0xc209d077e0
runtime.goparkunlock(0xc2122d24d8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209d07838 sp=0xc209d07810
runtime.chanrecv(0x6b23c0, 0xc2122d2480, 0xc209d079e8, 0xc208ccfd01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc209d078d8 sp=0xc209d07838
runtime.chanrecv2(0x6b23c0, 0xc2122d2480, 0xc209d079e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209d07908 sp=0xc209d078d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc209d032c0, 0xc20006183c)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209d07b40 sp=0xc209d07908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc209d032c0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209d07fd0 sp=0xc209d07b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209d07fd8 sp=0xc209d07fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 71843 [chan receive]:
runtime.gopark(0x43b510, 0xc213337318, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20920b810 sp=0xc20920b7e0
runtime.goparkunlock(0xc213337318, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20920b838 sp=0xc20920b810
runtime.chanrecv(0x6b23c0, 0xc2133372c0, 0xc20920b9e8, 0xc208cced01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20920b8d8 sp=0xc20920b838
runtime.chanrecv2(0x6b23c0, 0xc2133372c0, 0xc20920b9e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20920b908 sp=0xc20920b8d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073c70, 0xc2000618e6)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20920bb40 sp=0xc20920b908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073c70)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20920bfd0 sp=0xc20920bb40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20920bfd8 sp=0xc20920bfd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 91237 [select]:
runtime.gopark(0x41b400, 0xc20a819f48, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a819d50 sp=0xc20a819d20
runtime.selectgoImpl(0xc20a819f48, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a819ee8 sp=0xc20a819d50
runtime.selectgo(0xc20a819f48)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a819f08 sp=0xc20a819ee8
github.com/google/cups-connector/cups.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:324 +0x105 fp=0xc20a819fe0 sp=0xc20a819f08
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a819fe8 sp=0xc20a819fe0
created by github.com/google/cups-connector/cups.(*cupsCore).disconnect
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:331 +0xd2

goroutine 76120 [chan receive]:
runtime.gopark(0x43b510, 0xc20d355858, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209207810 sp=0xc2092077e0
runtime.goparkunlock(0xc20d355858, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209207838 sp=0xc209207810
runtime.chanrecv(0x6b23c0, 0xc20d355800, 0xc2092079e8, 0xc208ccfe01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc2092078d8 sp=0xc209207838
runtime.chanrecv2(0x6b23c0, 0xc20d355800, 0xc2092079e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209207908 sp=0xc2092078d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073040, 0xc200061906)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209207b40 sp=0xc209207908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073040)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209207fd0 sp=0xc209207b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209207fd8 sp=0xc209207fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 56135 [chan receive]:
runtime.gopark(0x43b510, 0xc213337a98, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc208d73810 sp=0xc208d737e0
runtime.goparkunlock(0xc213337a98, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc208d73838 sp=0xc208d73810
runtime.chanrecv(0x6b23c0, 0xc213337a40, 0xc208d739e8, 0xc208ccf901, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc208d738d8 sp=0xc208d73838
runtime.chanrecv2(0x6b23c0, 0xc213337a40, 0xc208d739e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc208d73908 sp=0xc208d738d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073590, 0xc200061889)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc208d73b40 sp=0xc208d73908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073590)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc208d73fd0 sp=0xc208d73b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc208d73fd8 sp=0xc208d73fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 3322 [select, 13 minutes]:
runtime.gopark(0x41b400, 0xc20a817f48, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a817d00 sp=0xc20a817cd0
runtime.selectgoImpl(0xc20a817f48, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a817e98 sp=0xc20a817d00
runtime.selectgo(0xc20a817f48)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a817eb8 sp=0xc20a817e98
github.com/google/cups-connector/manager.func·002()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:181 +0x237 fp=0xc20a817fe0 sp=0xc20a817eb8
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a817fe8 sp=0xc20a817fe0
created by github.com/google/cups-connector/manager.(*PrinterManager).syncPrintersPeriodically
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:192 +0xd2

goroutine 19546 [chan receive]:
runtime.gopark(0x43b510, 0xc20df362f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc209d0b810 sp=0xc209d0b7e0
runtime.goparkunlock(0xc20df362f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc209d0b838 sp=0xc209d0b810
runtime.chanrecv(0x6b23c0, 0xc20df362a0, 0xc209d0b9e8, 0xc208ccf401, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc209d0b8d8 sp=0xc209d0b838
runtime.chanrecv2(0x6b23c0, 0xc20df362a0, 0xc209d0b9e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc209d0b908 sp=0xc209d0b8d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211073310, 0xc200061753)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc209d0bb40 sp=0xc209d0b908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211073310)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc209d0bfd0 sp=0xc209d0bb40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc209d0bfd8 sp=0xc209d0bfd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 91091 [chan receive]:
runtime.gopark(0x43b510, 0xc20b78c058, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20ffcf810 sp=0xc20ffcf7e0
runtime.goparkunlock(0xc20b78c058, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20ffcf838 sp=0xc20ffcf810
runtime.chanrecv(0x6b23c0, 0xc20b78c000, 0xc20ffcf9e8, 0xc208ccee01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20ffcf8d8 sp=0xc20ffcf838
runtime.chanrecv2(0x6b23c0, 0xc20b78c000, 0xc20ffcf9e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20ffcf908 sp=0xc20ffcf8d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc2097ce8c0, 0xc200061956)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20ffcfb40 sp=0xc20ffcf908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc2097ce8c0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20ffcffd0 sp=0xc20ffcfb40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20ffcffd8 sp=0xc20ffcffd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 91238 [select]:
runtime.gopark(0x41b400, 0xc20a816748, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a816550 sp=0xc20a816520
runtime.selectgoImpl(0xc20a816748, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a8166e8 sp=0xc20a816550
runtime.selectgo(0xc20a816748)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a816708 sp=0xc20a8166e8
github.com/google/cups-connector/cups.func·001()
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:324 +0x105 fp=0xc20a8167e0 sp=0xc20a816708
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a8167e8 sp=0xc20a8167e0
created by github.com/google/cups-connector/cups.(*cupsCore).disconnect
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/cups/core.go:331 +0xd2

goroutine 82493 [chan receive]:
runtime.gopark(0x43b510, 0xc209bbf7f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a955810 sp=0xc20a9557e0
runtime.goparkunlock(0xc209bbf7f8, 0x7d27f0, 0xc)
    /usr/local/go/src/runtime/proc.go:136 +0x48 fp=0xc20a955838 sp=0xc20a955810
runtime.chanrecv(0x6b23c0, 0xc209bbf7a0, 0xc20a9559e8, 0xc208ccfe01, 0x0)
    /usr/local/go/src/runtime/chan.go:467 +0x82c fp=0xc20a9558d8 sp=0xc20a955838
runtime.chanrecv2(0x6b23c0, 0xc209bbf7a0, 0xc20a9559e8, 0xb)
    /usr/local/go/src/runtime/chan.go:316 +0x2b fp=0xc20a955908 sp=0xc20a9558d8
github.com/google/cups-connector/manager.(*PrinterManager).followJob(0xc2098a0080, 0xc211072dc0, 0xc200061921)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:498 +0xc0 fp=0xc20a955b40 sp=0xc20a955908
github.com/google/cups-connector/manager.(*PrinterManager).processJob(0xc2098a0080, 0xc211072dc0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:484 +0xdbf fp=0xc20a955fd0 sp=0xc20a955b40
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a955fd8 sp=0xc20a955fd0
created by github.com/google/cups-connector/manager.(*PrinterManager).handlePrinterNewJobs
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/manager/printermanager.go:314 +0x228

goroutine 3324 [select, 252 minutes]:
runtime.gopark(0x41b400, 0xc20a0e2730, 0x7bfcd0, 0x6)
    /usr/local/go/src/runtime/proc.go:130 +0x105 fp=0xc20a0e2470 sp=0xc20a0e2440
runtime.selectgoImpl(0xc20a0e2730, 0x0, 0x18)
    /usr/local/go/src/runtime/select.go:366 +0xb2c fp=0xc20a0e2608 sp=0xc20a0e2470
runtime.selectgo(0xc20a0e2730)
    /usr/local/go/src/runtime/select.go:183 +0x12 fp=0xc20a0e2628 sp=0xc20a0e2608
github.com/google/cups-connector/monitor.(*Monitor).listen(0xc20c1dff00, 0x7feb4c142290, 0xc20c1dffa0)
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/monitor/monitor.go:74 +0x661 fp=0xc20a0e27c8 sp=0xc20a0e2628
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20a0e27d0 sp=0xc20a0e27c8
created by github.com/google/cups-connector/monitor.NewMonitor
    /tmp/buildd/google-cloudprint-tools-2015/src/github.com/google/cups-connector/monitor/monitor.go:47 +0x1de

.../cups-connector/lib/deephash.go:50: undefined: strings.Compare

I got this error on raspberry pi 2 Raspbian Jessie and Kubuntu 15.04:
$ go get github.com/google/cups-connector/...

github.com/google/cups-connector/lib

gopath/src/github.com/google/cups-connector/lib/deephash.go:50: undefined: strings.Compare
$
Is this a known bug or do I something wrong?

Best regards

"connector.go daemon not running" when in docker container

After running "Google Cloud Print CUPS Connector" in Debian VM for some time I decided to try it out in docker container.

I was able to have "go" installed as well as gcp compiled. I was also able to use connector-init and I got cups-connector.config.json

I confirmed that the newly created cups-connector.config.json consist the following entry:

"monitor_socket_filename": "/tmp/cups-connector-monitor.sock",

Unfortunately when trying to start connector I'm getting the following:

root@ffb6ce0f60dc:/tmp# /opt/gcp_cups_connector/connector -config-filename /config/cups-connector.config.json
E0924 11:03:11.645324     217 connector.go:33] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
F0924 11:03:12.324227     217 connector.go:122] Daemon not running
goroutine 1 [running]:
github.com/golang/glog.stacks(0xc96100, 0x0, 0x0, 0x0)
        /tmp/src/github.com/golang/glog/glog.go:769 +0xb8
github.com/golang/glog.(*loggingT).output(0xc71bc0, 0xc800000003, 0xc8200f20c0, 0xa5172d, 0xc, 0x7a, 0x0)
        /tmp/src/github.com/golang/glog/glog.go:720 +0x2b8
github.com/golang/glog.(*loggingT).printDepth(0xc71bc0, 0x3, 0x1, 0xc820237df0, 0x1, 0x1)
        /tmp/src/github.com/golang/glog/glog.go:646 +0x1b8
github.com/golang/glog.(*loggingT).print(0xc71bc0, 0x3, 0xc820237df0, 0x1, 0x1)
        /tmp/src/github.com/golang/glog/glog.go:637 +0x50
github.com/golang/glog.Fatal(0xc820237df0, 0x1, 0x1)
        /tmp/src/github.com/golang/glog/glog.go:1128 +0x49
main.main()
        /tmp/src/github.com/google/cups-connector/connector/connector.go:122 +0x12c7

I would appreciate any suggestions to get this going in docker.

I will be more then happy to provide any debug needed such as connector.ERROR, connector.FATAL
connector.INFO, connector.WARNING, etc.

Thanks
Hubert

Cannot use from behind a firewall

I'm a corporate user and have no authority to open firewall ports. Please add proxy server support.

The error I'm getting is:

F0909 17:08:40.408103 14144 connector.go:73] Failed to start XMPP conversation: Failed to dial XMPP service: Failed to connect to XMPP server: dial tcp [2404:6800:4003:c02::7d]:443: i/o timeout

FYI, I was able to run connector-init fine, so proxy for HTTP requests already seems to work.

Thanks.

Add PIN-locked printing where possible

I notice that some Ricoh printers support 4-digit "Secure Print". I tested it with an lp command, not hard to make it work with JobType=LockedPrint and PinDigit1=5 PinDigit2=4 PinDigit3=3 PinDigit4=2.

Relevant PPD snippet from http://www.openprinting.org/ppd-o-matic.php?driver=Postscript-Ricoh&printer=Ricoh-Aficio_MP_C3501&show=1:

*OpenGroup: JobLog/Job Log

*OpenUI *JobType/JobType: PickOne
*FoomaticRIPOption JobType: enum CmdLine B
*OrderDependency: 255 AnySetup *JobType
*DefaultJobType: Normal
*JobType Normal/Normal: "%% FoomaticRIPOptionSetting: JobType=Normal"
*FoomaticRIPOptionSetting JobType=Normal: "mark\n&&
() () (20`date +%y%m%d%R | sed 's/://'`) {setuserinfo} stopped\n&&
cleartomark\n"
*End
*JobType SamplePrint/Sample Print: "%% FoomaticRIPOptionSetting: JobType=SamplePrint"
*FoomaticRIPOptionSetting JobType=SamplePrint: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) {proofprint} stopped\n&&
cleartomark\n"
*End
*JobType LockedPrint/Locked Print: ""
*JobType DocServer/Document Server: ""
*CloseUI: *JobType

*OpenUI *LockedPrintPassword/Locked Print Password (4-8 digits): PickOne
*FoomaticRIPOption LockedPrintPassword: password CmdLine C
*FoomaticRIPOptionMaxLength LockedPrintPassword:8
*FoomaticRIPOptionAllowedChars LockedPrintPassword: "0-9"
*OrderDependency: 255 AnySetup *LockedPrintPassword
*FoomaticRIPOptionPrototype LockedPrintPassword: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (%s) {secureprint} stopped\n&&
cleartomark\n"
*End
*DefaultLockedPrintPassword: None
*LockedPrintPassword None/None: ""
*LockedPrintPassword 4001/4001: "%% FoomaticRIPOptionSetting: LockedPrintPassword=4001"
*FoomaticRIPOptionSetting LockedPrintPassword=4001: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (4001) {secureprint} stopped\n&&
cleartomark\n"
*End
*LockedPrintPassword 4002/4002: "%% FoomaticRIPOptionSetting: LockedPrintPassword=4002"
*FoomaticRIPOptionSetting LockedPrintPassword=4002: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (4002) {secureprint} stopped\n&&
cleartomark\n"
*End
*LockedPrintPassword 4003/4003: "%% FoomaticRIPOptionSetting: LockedPrintPassword=4003"
*FoomaticRIPOptionSetting LockedPrintPassword=4003: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (4003) {secureprint} stopped\n&&
cleartomark\n"
*End
*CloseUI: *LockedPrintPassword
*CustomLockedPrintPassword True/Custom Password: ""
*ParamCustomLockedPrintPassword Password: 1 passcode 4 8

*OpenUI *DocServerPassword/Document Server Password (4-8 digits): PickOne
*FoomaticRIPOption DocServerPassword: password CmdLine D
*FoomaticRIPOptionMaxLength DocServerPassword:8
*FoomaticRIPOptionAllowedChars DocServerPassword: "0-9"
*OrderDependency: 255 AnySetup *DocServerPassword
*FoomaticRIPOptionPrototype DocServerPassword: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (%s) (&title;) {storedprint} stopped\n&&
cleartomark\n"
*End
*DefaultDocServerPassword: None
*DocServerPassword None/None: ""
*DocServerPassword 3001/3001: "%% FoomaticRIPOptionSetting: DocServerPassword=3001"
*FoomaticRIPOptionSetting DocServerPassword=3001: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (3001) (&title;) {storedprint} stopped\n&&
cleartomark\n"
*End
*DocServerPassword 3002/3002: "%% FoomaticRIPOptionSetting: DocServerPassword=3002"
*FoomaticRIPOptionSetting DocServerPassword=3002: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (3002) (&title;) {storedprint} stopped\n&&
cleartomark\n"
*End
*DocServerPassword 3003/3003: "%% FoomaticRIPOptionSetting: DocServerPassword=3003"
*FoomaticRIPOptionSetting DocServerPassword=3003: "mark\n&&
(&user;) (20`date +%y%m%d%R | sed 's/://'`) (3003) (&title;) {storedprint} stopped\n&&
cleartomark\n"
*End
*CloseUI: *DocServerPassword
*CustomDocServerPassword True/Custom Password: ""
*ParamCustomDocServerPassword Password: 1 passcode 4 8

*OpenUI *UserCode/User Code (up to 8 digits): PickOne
*FoomaticRIPOption UserCode: string CmdLine A
*FoomaticRIPOptionMaxLength UserCode:8
*FoomaticRIPOptionAllowedChars UserCode: "0-9"
*OrderDependency: 255 AnySetup *UserCode
*FoomaticRIPOptionPrototype UserCode: "mark\n&&
() (%s) (20`date +%y%m%d%R | sed 's/://'`) {setuserinfo} stopped\n&&
cleartomark\n"
*End
*DefaultUserCode: None
*UserCode None/None: ""
*UserCode 1001/1001: "%% FoomaticRIPOptionSetting: UserCode=1001"
*FoomaticRIPOptionSetting UserCode=1001: "mark\n&&
() (1001) (20`date +%y%m%d%R | sed 's/://'`) {setuserinfo} stopped\n&&
cleartomark\n"
*End
*UserCode 1002/1002: "%% FoomaticRIPOptionSetting: UserCode=1002"
*FoomaticRIPOptionSetting UserCode=1002: "mark\n&&
() (1002) (20`date +%y%m%d%R | sed 's/://'`) {setuserinfo} stopped\n&&
cleartomark\n"
*End
*UserCode 1003/1003: "%% FoomaticRIPOptionSetting: UserCode=1003"
*FoomaticRIPOptionSetting UserCode=1003: "mark\n&&
() (1003) (20`date +%y%m%d%R | sed 's/://'`) {setuserinfo} stopped\n&&
cleartomark\n"
*End
*CloseUI: *UserCode
*CustomUserCode True/Custom UserCode: ""
*ParamCustomUserCode UserCode: 1 passcode 1 8

*CloseGroup: JobLog/Job Log

Review SNMP support

SNMP seems to be leaking memory slowly, less than 100 bytes per call to getbulk.

Additionally, review SNMP's usefulness now that PPDs are parsed internally. It may be possible, for example, to filter the available media sizes that PPDs report.

Use standard location for default config file

On anything but OS X that would be under $XDG_CONFIG_HOME (or its default value). (Or does Go have a way to get this location in a portable way?) Either way, storing the information in a standard location avoids needing either to run the programs in a particular directory or always to pass the config file's location.

Local printing failing with api-server.go:321] Failed to read request body: json: Unmarshal(non-pointer cdd.CloudJobTicket)

Pi2 running Ubuntu 14.04.3 (up to date) and Go 1.5. Pulled connector just this morning and it compiles properly but attempting to do local print from my Chromebook Pixel is failing with errors like:

api-server.go:321] Failed to read request body: json: Unmarshal(non-pointer cdd.CloudJobTicket)

Whichi indicates that Go doesn't like the format of the body when converting it from JSON. I ran tcpdump on the Pi and captured the following which looks like a perfectly valid JSON job creation request as far as I can see:

07:06:41.643819 IP 10.9.8.20.55607 > 10.9.8.4.50217: Flags [P.], seq 1218:1935, ack 34499, win 331, options [nop,nop,TS val 9374778 ecr 295227], length 717
E...N.@.@...
        ..
        ...7.)..J6<......K.=.....
...:...;POST /privet/printer/createjob HTTP/1.1
Host: 10.9.8.4:50217
Connection: keep-alive
Content-Length: 325
X-Privet-Token: XXXX-unsure-if-this-is-OAuth-Token-So-Removing-XXXX
Content-Type: application/json
User-Agent: Mozilla/5.0 (X11; CrOS x86_64 7262.41.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.51 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

{
   "print": {
      "dpi": {
         "horizontal_dpi": 300,
         "vendor_id": "300dpi",
         "vertical_dpi": 300
      },
      "media_size": {
         "height_microns": 297038,
         "is_continuous_feed": false,
         "vendor_id": "A4",
         "width_microns": 209902
      }
   },
   "version": "1.0"
}

GCP error "UUID is required"

When the connector is upgraded from pre-GCP-2.0 to post, the UUID field is not updated, as required.

E0709 20:11:50.401595   13130 connector.go:31] Google Cloud Print CUPS Connector version DEV-linux
I0709 20:11:50.449797   13130 core.go:92] connected to CUPS server /var/run/cups/cups.sock:631 encrypting REQUIRED
I0709 20:11:51.912626   13130 printermanager.go:237] Synchronizing printers, stand by
E0709 20:11:52.639820   13130 printermanager.go:302] Failed to update tsp700ii: https://www.google.com/cloudprint/update call failed: UUID is required.
E0709 20:11:52.656235   13130 printermanager.go:302] Failed to update mf: https://www.google.com/cloudprint/update call failed: UUID is required.
E0709 20:11:52.715586   13130 printermanager.go:302] Failed to update epson-test-t88iv: https://www.google.com/cloudprint/update call failed: UUID is required.
I0709 20:11:52.715861   13130 printermanager.go:273] Finished synchronizing 3 printers
E0709 20:11:52.715965   13130 connector.go:106] Ready to rock as proxy 'printserver-unstableg'

Support PPD keyword CMAndResolution

Some HP printers (two that I have encountered) claim to support color/monochrome, but CUPS' print-color-mode doesn't have any effect, and there is no ColorModel keyword, but there is a CMAndResolution keyword, which has the effect of both ColorModel and Resolution PPD keywords.

Implement either DPI or Color in CDD using CMAndResolution keyword.

*OpenUI *CMAndResolution/Print Color as Gray: PickOne
*OrderDependency: 20 AnySetup *CMAndResolution
*DefaultCMAndResolution: CMYKImageRET2400
*CMAndResolution CMYKImageRET2400/Off - ImageRET 2400: "<< /ProcessColorModel /DeviceCMYK /HWResolution [600 600]  >> setpagedevice"
*CMAndResolution Gray1200x1200dpi/On - ProRes 1200: "<</ProcessColorModel /DeviceGray /HWResolution [1200 1200] /PreRenderingEnhance false>> setpagedevice"
*CMAndResolution Gray600x600dpi/On - 600 dpi: "<</ProcessColorModel /DeviceGray /HWResolution [600 600] /PreRenderingEnhance false>> setpagedevice"
*CloseUI: *CMAndResolution

mDNS doesn't broadcast (OSX)

Privet works fine on OSX, as long as the client is running on the same machine. Otherwise, the announcements don't appear on other mDNS agents listening to the same subnet.

Badly formatted PPD causes panic

Google Cloud Print CUPS Connector version DEV-linux
panic: runtime error: index out of range

goroutine 38 [running]:
github.com/google/cups-connector/cups.parseManufacturerAndModel(0xc208453000, 0x45a1, 0x0, 0x0, 0x0, 0x0)
    /path/to/src/github.com/google/cups-connector/cups/ppd.go:48 +0x304
github.com/google/cups-connector/cups.(*ppdCacheEntry).refresh(0xc2083f5000, 0xc20803d380, 0xc20802acd0, 0x0, 0x0)
    /path/to/src/github.com/google/cups-connector/cups/ppdcache.go:220 +0x7c1

Android GCP app fails to print

The Android GCP app fails to print via a Connector running on Ubuntu trusty, CUPS 1.7. Looks like the media job option isn't being set:

[Job 972] argv[5]="Collate ColorModel=Gray Duplex=None nofit-to-page media= orientation-requested=3 outputorder=normal page-bottom=36 page-left=36 page-right=36 page-top=36 Resolution=600x258dpi job-uuid=urn:uuid:81285484-84b1-3760-7fdb-2aced49a3d7d job-originating-host-name=localhost time-at-creation=1438268729 time-at-processing=1438268729"

Local printing HTTP servers get confused

I was testing some new code against local (Privet) printers when suddenly, all of the printers had the same capabilities. It looks like mDNS is still accurate, but the backing HTTP servers' /capabilities queries all return the same CDD.

Support HTTP Proxy Servers

CUPS Connector should look for an honor the http_proxy and https_proxy variables when making HTTPS and XMPP connections.

Use GCP 2.0 API

Currently, the connector uses the 1.0 API, and one feature from 2.0 (CDD instead of PPD).

Too many panic()

There are too many calls to panic(). They are used in ways such that stack traces aren't necessary, or helpful. There may be zero good places to call panic(); investigate.

Document all connections cups-connector needs

To my knowledge, cups connector needs:

  • HTTPS port 443 connectivity to accounts.google.com (OAuth authorize and token refresh)
  • HTTPS port 443 connectivity to www.google.com (/cloudprint API endpoints)
  • XMPP port 443 connectivity to talk.google.com (print job notification channel)

in order to function correctly. No additional connections should be needed (assuming of course we have direct LAN connectivy to CUPS). We should confirm these are the only connections needed and document them accordingly.

Error: listen unix /var/run/cups-connector/monitor.sock: bind: no such file or directory

I managed to install and compile the connector on ubuntu LTS 14.04. I ran connector-init to generate the .json config file, but i can't get the connector to run. When executing at the command line i get this:
robert@ub:/work/bin$ sudo ./connector &
[1] 3101
robert@ub:
/work/bin$ E0910 16:58:36.051510 3102 connector.go:33] Google Cloud Print CUPS Connector version DEV-linux
Google Cloud Print CUPS Connector version DEV-linux
F0910 16:58:38.039805 3102 connector.go:115] listen unix /var/run/cups-connector/monitor.sock: bind: no such file or directory
goroutine 1 [running]:
github.com/golang/glog.stacks(0xc92d00, 0x0, 0x0, 0x0)
/home/robert/work/src/github.com/golang/glog/glog.go:769 +0xb8
github.com/golang/glog.(_loggingT).output(0xc6e840, 0xc800000003, 0xc8200be0c0, 0xa4e5b8, 0xc, 0x73, 0x0)
/home/robert/work/src/github.com/golang/glog/glog.go:720 +0x2b8
github.com/golang/glog.(_loggingT).printDepth(0xc6e840, 0xc800000003, 0x1, 0xc82007fe00, 0x1, 0x1)
/home/robert/work/src/github.com/golang/glog/glog.go:646 +0x1b8
github.com/golang/glog.(*loggingT).print(0xc6e840, 0xc800000003, 0xc82007fe00, 0x1, 0x1)
/home/robert/work/src/github.com/golang/glog/glog.go:637 +0x50
github.com/golang/glog.Fatal(0xc82007fe00, 0x1, 0x1)
/home/robert/work/src/github.com/golang/glog/glog.go:1128 +0x49
main.main()
/home/robert/work/src/github.com/google/cups-connector/connector/connector.go:115 +0x1486

[1]+ Exit 255 sudo ./connector

FR: printing multiple pages per sheet

Currently both Cloud Print native print dialog and Chrome Print dialog are missing the option to print multiple pages per sheet.

Please add this option if it is possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.