diff options
author | Didier Raboud <odyx@debian.org> | 2012-10-25 21:07:57 +0200 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2012-10-25 21:07:57 +0200 |
commit | 81ab83f382660bc7980ae954725c4ebf28764b03 (patch) | |
tree | 523268f698a63a8fd44f3491d94d140266b2403b /backend/network.c | |
parent | a75966e33dbc3e3e096338fd332f515cb313b58a (diff) | |
download | cups-upstream/1.6.0.tar.gz |
Imported Upstream version 1.6.0upstream/1.6.0
Diffstat (limited to 'backend/network.c')
-rw-r--r-- | backend/network.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/backend/network.c b/backend/network.c index d5827c46..387d5150 100644 --- a/backend/network.c +++ b/backend/network.c @@ -1,5 +1,5 @@ /* - * "$Id: network.c 9578 2011-03-04 18:44:47Z mike $" + * "$Id: network.c 10389 2012-03-28 21:57:29Z mike $" * * Common backend network APIs for CUPS. * @@ -71,7 +71,7 @@ backendNetworkSideCB( { cups_sc_command_t command; /* Request command */ cups_sc_status_t status; /* Request/response status */ - char data[2048]; /* Request/response data */ + char data[65536]; /* Request/response data */ int datalen; /* Request/response data size */ const char *device_id; /* 1284DEVICEID env var */ @@ -92,7 +92,7 @@ backendNetworkSideCB( status = CUPS_SC_STATUS_NOT_IMPLEMENTED; else if (backendDrainOutput(print_fd, device_fd)) status = CUPS_SC_STATUS_IO_ERROR; - else + else status = CUPS_SC_STATUS_OK; datalen = 0; @@ -119,8 +119,35 @@ backendNetworkSideCB( if (snmp_fd >= 0) { + char *dataptr; /* Pointer into data */ cups_snmp_t packet; /* Packet from printer */ + const char *snmp_value; /* CUPS_SNMP_VALUE env var */ + if ((snmp_value = getenv("CUPS_SNMP_VALUE")) != NULL) + { + const char *snmp_count; /* CUPS_SNMP_COUNT env var */ + int count; /* Repetition count */ + + if ((snmp_count = getenv("CUPS_SNMP_COUNT")) != NULL) + { + if ((count = atoi(snmp_count)) <= 0) + count = 1; + } + else + count = 1; + + for (dataptr = data + strlen(data) + 1; + count > 0 && dataptr < (data + sizeof(data) - 1); + count --, dataptr += strlen(dataptr)) + strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data)); + + fprintf(stderr, "DEBUG: Returning %s %s\n", data, + data + strlen(data) + 1); + + status = CUPS_SC_STATUS_OK; + datalen = dataptr - data; + break; + } if (!_cupsSNMPStringToOID(data, packet.object_name, CUPS_SNMP_MAX_OID)) { @@ -141,7 +168,6 @@ backendNetworkSideCB( { if (_cupsSNMPRead(snmp_fd, &packet, 1.0)) { - char *dataptr; /* Pointer into data */ int i; /* Looping var */ @@ -172,7 +198,7 @@ backendNetworkSideCB( case CUPS_ASN1_OCTET_STRING : if (packet.object_value.string.num_bytes < 0) i = 0; - else if (packet.object_value.string.num_bytes < + else if (packet.object_value.string.num_bytes < (sizeof(data) - (dataptr - data))) i = packet.object_value.string.num_bytes; else @@ -296,5 +322,5 @@ backendNetworkSideCB( /* - * End of "$Id: network.c 9578 2011-03-04 18:44:47Z mike $". + * End of "$Id: network.c 10389 2012-03-28 21:57:29Z mike $". */ |