Mercurial > hg > rlgwebd
annotate index-rlg.html @ 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 | bc69717ff386 | 
| children | db27b91578f0 | 
| rev | line source | 
|---|---|
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 2 <html> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 3 <head> | 
| 135 
e4f27a093d1e
Bump the version number.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
133diff
changeset | 4 <title>RLG-Web β6</title> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 5 <script type="text/javascript" src="termemu.js"></script> | 
| 6 
21738794755e
Put common key tables into a common file.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
0diff
changeset | 6 <script type="text/javascript" src="termemu-keys.js"></script> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 7 <script type="text/javascript" src="rlgterm.js"></script> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 8 <link rel="stylesheet" type="text/css" href="tty.css"> | 
| 21 
82be54381964
RLG-Web client: some cleanup
 John "Elwin" Edwards <elwin@sdf.org> parents: 
19diff
changeset | 9 <link rel="stylesheet" type="text/css" href="style-rlg.css"> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 10 </head> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 11 <body onload="setup()" onkeydown="sendkey(event)"> | 
| 135 
e4f27a093d1e
Bump the version number.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
133diff
changeset | 12 <h1>RLG-Web β6</h1> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 13 <div id ="top"> | 
| 145 
3308eaa00c91
Use SVG for the bell icon instead of PNG.
 John "Elwin" Edwards parents: 
135diff
changeset | 14 <img src="/bell.svg" alt="bell" id="bell"> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 15 </div> | 
| 98 | 16 <div id="termwrap">RLG-Web won't work without JavaScript. It's not as bad as Flash, I promise.</div> | 
| 19 
188bbd857124
RLG-Web: add user registration
 John "Elwin" Edwards <elwin@sdf.org> parents: 
8diff
changeset | 17 <div class="modal" id="keyboard"> | 
| 76 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 18 <div id="keys"> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 19 <div class="keyrow"> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 20 <div class="key" onclick="vkey('`')">`</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 21 <div class="key" onclick="vkey('1')">1</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 22 <div class="key" onclick="vkey('2')">2</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 23 <div class="key" onclick="vkey('3')">3</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 24 <div class="key" onclick="vkey('4')">4</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 25 <div class="key" onclick="vkey('5')">5</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 26 <div class="key" onclick="vkey('6')">6</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 27 <div class="key" onclick="vkey('7')">7</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 28 <div class="key" onclick="vkey('8')">8</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 29 <div class="key" onclick="vkey('9')">9</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 30 <div class="key" onclick="vkey('0')">0</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 31 <div class="key" onclick="vkey('-')">-</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 32 <div class="key" onclick="vkey('=')">=</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 33 <div class="key" onclick="vkey('\b')" style="width: 2.5em">Bksp</div> | 
| 76 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 34 <div class="rkey" onclick="vkey('KP9')">↗</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 35 <div class="rkey" onclick="vkey('KP8')">↑</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 36 <div class="rkey" onclick="vkey('KP7')">↖</div> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 37 </div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 38 <div class="keyrow"> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 39 <div class="key" onclick="vkey('\t')" style="width: 2.5em">Tab</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 40 <div class="key" onclick="vkey('q')">Q</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 41 <div class="key" onclick="vkey('w')">W</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 42 <div class="key" onclick="vkey('e')">E</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 43 <div class="key" onclick="vkey('r')">R</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 44 <div class="key" onclick="vkey('t')">T</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 45 <div class="key" onclick="vkey('y')">Y</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 46 <div class="key" onclick="vkey('u')">U</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 47 <div class="key" onclick="vkey('i')">I</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 48 <div class="key" onclick="vkey('o')">O</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 49 <div class="key" onclick="vkey('p')">P</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 50 <div class="key" onclick="vkey('[')">[</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 51 <div class="key" onclick="vkey(']')">]</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 52 <div class="key" onclick="vkey('\\')">\</div> | 
| 76 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 53 <div class="rkey" onclick="vkey('KP6')">→</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 54 <div class="rkey" onclick="vkey('KP5')">·</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 55 <div class="rkey" onclick="vkey('KP4')">←</div> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 56 </div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 57 <div class="keyrow"> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 58 <div class="key" onclick="togglectrl()" id="ctrlkey">Ctrl</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 59 <div class="key" onclick="vkey('a')">A</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 60 <div class="key" onclick="vkey('s')">S</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 61 <div class="key" onclick="vkey('d')">D</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 62 <div class="key" onclick="vkey('f')">F</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 63 <div class="key" onclick="vkey('g')">G</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 64 <div class="key" onclick="vkey('h')">H</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 65 <div class="key" onclick="vkey('j')">J</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 66 <div class="key" onclick="vkey('k')">K</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 67 <div class="key" onclick="vkey('l')">L</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 68 <div class="key" onclick="vkey(';')">;</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 69 <div class="key" onclick="vkey('\'')">'</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 70 <div class="key" onclick="vkey('\n')" style="width: 4em">Ret</div> | 
| 76 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 71 <div class="rkey" onclick="vkey('KP3')">↘</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 72 <div class="rkey" onclick="vkey('KP2')">↓</div> | 
| 
a497ecd116d9
Improvements to the keyboard.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
74diff
changeset | 73 <div class="rkey" onclick="vkey('KP1')">↙</div> | 
| 0 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 74 </div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 75 <div class="keyrow"> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 76 <div class="key" onclick="toggleshift()" id="shiftkey">Shift</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 77 <div class="key" onclick="vkey('z')">Z</div> | 
| 
bd412f63ce0d
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 78 <div class="key" onclick="vkey('x')">X</div> | 
