From 37e9010887783c307355f3144786ed72e8a973b0 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 6 Jan 2015 12:46:28 +0100
Subject: [PATCH] input/async: reset the "open" flag after seeking successfully

Fixes a problem with the "curl" input plugin: IsEOF() always returns
true because the "open" flag was cleared by
CurlInputStream::RequestDone() when end-of-stream was reached.  This
flag stays false even when seeking to another position has succeeded.

This patch resets the "open" flag to true after seeking successfully.
---
 NEWS                           | 1 +
 src/input/AsyncInputStream.cxx | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/NEWS b/NEWS
index 37b3b4cad..5e8d58c22 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
 ver 0.19.8 (not yet released)
 * input
+  - curl: fix bug after rewinding from end-of-file
   - mms: reduce delay at the beginning of playback
 * decoder
   - dsdiff, dsf: allow ID3 tags larger than 4 kB
diff --git a/src/input/AsyncInputStream.cxx b/src/input/AsyncInputStream.cxx
index c8e3fcfd5..5795ecead 100644
--- a/src/input/AsyncInputStream.cxx
+++ b/src/input/AsyncInputStream.cxx
@@ -160,6 +160,11 @@ AsyncInputStream::SeekDone()
 	assert(io_thread_inside());
 	assert(IsSeekPending());
 
+	/* we may have reached end-of-file previously, and the
+	   connection may have been closed already; however after
+	   seeking successfully, the connection must be alive again */
+	open = true;
+
 	seek_state = SeekState::NONE;
 	cond.broadcast();
 }