          MODULE=ipp-usb
         VERSION=0.9.30
          SOURCE=$MODULE-$VERSION.tar.gz
 SOURCE_URL_FULL=https://github.com/OpenPrinting/ipp-usb/archive/${VERSION}.tar.gz
      SOURCE_VFY=sha256:8c044bb0efb8807a64d406a1208cb82b7801d8349205d0ef8c03f637f0228651
        WEB_SITE=https://github.com/OpenPrinting/ipp-usb/
         ENTERED=20201006
         UPDATED=20250429
           SHORT="Allows using the IPP protocol by USB printers"

cat << EOF
IPP-over-USB allows using the IPP protocol, normally designed for network
printers, to be used with USB printers as well.
The idea behind this standard is simple: It allows to send HTTP requests to the
device via a USB connection, so enabling IPP, eSCL (AirScan) and web console on
devices without Ethernet or WiFi connections.
Unfortunately, the naive implementation, which simply relays a TCP connection
to USB, does not work. It happens because closing the TCP connection on the
client side has a useful side effect of discarding all data sent to this
connection from the server side, but it does not happen with USB connections.
In the case of USB, all data not received by the client will remain in the USB
buffers, and the next time the client connects to the device, it will receive
unexpected data, left from the previous abnormally completed request.
Actually, it is an obvious flaw in the IPP-over-USB standard, but we have to
live with it.
So the implementation, once the HTTP request is sent, must read the entire HTTP
response, which means that the implementation must understand the HTTP protocol,
and effectively implement a HTTP reverse proxy, backed by the IPP-over-USB
connection to the device.
EOF
