summaryrefslogtreecommitdiffstats
path: root/stream/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'stream/stream.c')
-rw-r--r--stream/stream.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/stream/stream.c b/stream/stream.c
index 3ea4d475b7..baee62221f 100644
--- a/stream/stream.c
+++ b/stream/stream.c
@@ -289,6 +289,13 @@ static int open_internal(const stream_info_t *sinfo, struct stream *underlying,
s->path = talloc_strdup(s, path);
s->source = underlying;
s->allow_caching = true;
+ s->mode = flags & (STREAM_READ | STREAM_WRITE);
+
+ if ((s->mode & STREAM_WRITE) && !sinfo->can_write) {
+ MP_ERR(s, "No write access implemented.\n");
+ talloc_free(s);
+ return STREAM_ERROR;
+ }
// Parse options
if (sinfo->priv_size) {
@@ -306,8 +313,7 @@ static int open_internal(const stream_info_t *sinfo, struct stream *underlying,
}
}
- s->mode = flags & (STREAM_READ | STREAM_WRITE);
- int r = sinfo->open(s, s->mode);
+ int r = sinfo->open(s);
if (r != STREAM_OK) {
talloc_free(s);
return r;