From 59d53162106c6be2e533bc5adfd3997499f32ae6 Mon Sep 17 00:00:00 2001
From: Colin Campbell <colin.campbell@ptfs-europe.com>
Date: Wed, 24 Jan 2018 09:20:12 +0000
Subject: [PATCH] Bug 20254: Do not ingest files with duplicate filenames

If the supplier delivers the same file twice we are
unable to rename it on the second occurence causing us to download
and process it infinitely.

Check that downloaded filenames are unique against those
on file and reject processing if a duplicate.

This patch delays this check to the ingest stage so that the
same code is processed irrespective of transport

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
---
 Koha/Edifact/Transport.pm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Koha/Edifact/Transport.pm b/Koha/Edifact/Transport.pm
index 036dbc2ae9..f53017bc39 100644
--- a/Koha/Edifact/Transport.pm
+++ b/Koha/Edifact/Transport.pm
@@ -182,6 +182,15 @@ sub sftp_download {
 sub ingest {
     my ( $self, $msg_hash, @downloaded_files ) = @_;
     foreach my $f (@downloaded_files) {
+
+        # Check file has not been downloaded already
+        my $existing_file = $self->{schema}->resultset('EdifactMessage')
+          ->find( { filename => $f, } );
+        if ($existing_file) {
+            carp "skipping ingest of $f : filename exists";
+            next;
+        }
+
         $msg_hash->{filename} = $f;
         my $file_content =
           read_file( "$self->{working_dir}/$f", binmode => ':raw' );
-- 
2.20.1 (Apple Git-117)