Fix double close()
AbstractDataSource::requestData() takes the ownership of the file descriptor. So the second close() will close an already closed fd.
AbstractDataSource::requestData() takes the ownership of the file descriptor. So the second close() will close an already closed fd.