Mercurial > hg > rlgwebd
view .hgtags @ 165:59e62710cbb5
rlgwebd.js: prevent races when reading ttyrecs.
DglSession objects read a 12-byte TTYREC header, extract therefrom the
length of the data chunk, and then read the data. In between these two
reads, the file watcher could trigger another readchunk() invocation,
which might attempt to read a header from the beginning of the data
chunk. This usually results in expecting a data chunk of several GB
and failing to create a Buffer for it.
The race is remedied by setting a flag on the DglSession object
whenever readchunk() is called, clearing it when both reads complete,
and refusing to read if it is already set.
author | John "Elwin" Edwards |
---|---|
date | Wed, 07 Jan 2015 13:18:35 -0500 |
parents | 56da59b343ca |
children | 60605bacde36 |
line wrap: on
line source
ab82ae1ba793094e27852f6b0f2914f299d0e42f beta1 4728fc71bbdaee0bcfd7059d8bced74790faefbc beta2 3fd410c52a614138d0bb76c7e6f9880144e66b3c beta3 75a016c49076a724f17df0d0aac4d6acedf4467f beta4 86c1b79cf6628843897bb88477c6807881262b17 beta5 e4f27a093d1e7628df7ff35f41cb946cccfa5360 beta6