>From c48085d47831a5d16f4eb6adb970b85db65c457c Mon Sep 17 00:00:00 2001
From: Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>
Date: Thu, 29 Aug 2013 14:51:55 +0900
Subject: [PATCH] Close file descriptor leak

This also gives other backends a better chance at finding any devices
they might support.
---
 backend/epson2.c |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/backend/epson2.c b/backend/epson2.c
index 555c44a..baa34f7 100644
--- a/backend/epson2.c
+++ b/backend/epson2.c
@@ -464,13 +464,15 @@ open_scanner(Epson_Scanner *s)
 
 			/* the scanner sends a kind of welcome msg */
 			read = e2_recv(s, buf, 5, &status);
-			if (read != 5)
+			if (read != 5) {
+				sanei_tcp_close(s->fd);
+				s->fd = -1;
 				return SANE_STATUS_IO_ERROR;
-
+			}
 			DBG(32, "welcome message received, locking the scanner...\n");
 
 			/* lock the scanner for use by sane */
-			sanei_epson_net_lock(s);
+			status = sanei_epson_net_lock(s);
 
 			DBG(32, "scanner locked\n");
 		}
@@ -492,12 +494,14 @@ open_scanner(Epson_Scanner *s)
 		DBG(1, "disable any conflicting driver (like usblp).\n");
 	}
 
-	if (status != SANE_STATUS_GOOD) 
+	if (status != SANE_STATUS_GOOD) {
 		DBG(1, "%s open failed: %s\n", s->hw->sane.name,
 			sane_strstatus(status));
-	else
+		close (s->fd);
+		s->fd = -1;
+	} else {
 		DBG(5, "scanner opened\n");
-
+	}
 	return status;
 }
 
-- 
1.7.10.4

