Index: src/OFRunLoop.m ================================================================== --- src/OFRunLoop.m +++ src/OFRunLoop.m @@ -216,12 +216,14 @@ length: [queueItem length]]; if (![queueItem block](stream, buffer, length)) { [queue removeListObject: listObject]; - if ([queue count] == 0) + if ([queue count] == 0) { [streamObserver removeStreamForReading: stream]; + [readQueues removeObjectForKey: stream]; + } } } else if ([listObject->object isKindOfClass: [OFRunLoop_ReadLineQueueItem class]]) { OFRunLoop_ReadLineQueueItem *queueItem = listObject->object; OFString *line; @@ -230,13 +232,15 @@ if (line != nil || [stream isAtEndOfStream]) { if (![queueItem block](stream, line)) { [queue removeListObject: listObject]; - if ([queue count] == 0) + if ([queue count] == 0) { [streamObserver removeStreamForReading: stream]; + [readQueues removeObjectForKey: stream]; + } } } } else OF_ENSURE(0); }