diff --git a/backend/ipp.c b/backend/ipp.c index 8311a1cf9..4a6159da7 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -1400,12 +1400,18 @@ main(int argc, /* I - Number of command-line args */ if ((compatsize = write(fd, buffer, (size_t)bytes)) < 0) { perror("DEBUG: Unable to write temporary file"); + if (tmpfilename[0]) + unlink(tmpfilename); return (CUPS_BACKEND_FAILED); } if ((bytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0, backendNetworkSideCB)) < 0) + { + if (tmpfilename[0]) + unlink(tmpfilename); return (CUPS_BACKEND_FAILED); + } compatsize += bytes; diff --git a/backend/socket.c b/backend/socket.c index 2186a2ba1..5cc30a5b4 100644 --- a/backend/socket.c +++ b/backend/socket.c @@ -313,6 +313,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ sleep(5); + if (snmp_fd >= 0) + _cupsSNMPClose(snmp_fd); + if (print_fd != 0) + close(print_fd); return (CUPS_BACKEND_FAILED); } @@ -324,6 +328,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ { _cupsLangPrintFilter(stderr, "ERROR", _("The printer is not responding.")); + if (snmp_fd >= 0) + _cupsSNMPClose(snmp_fd); + if (print_fd != 0) + close(print_fd); return (CUPS_BACKEND_FAILED); } @@ -429,8 +437,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ close(device_fd); - httpAddrFreeList(addrlist); - /* * Close the input file and return... */