Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: sdk/lib/io/http_session.dart

Issue 13686005: WebSocket: Correctly expect masked frames from clients, and send masked frames from the client. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/common.dart ('k') | sdk/lib/io/websocket_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7 const String _DART_SESSION_ID = "DARTSESSID"; 7 const String _DART_SESSION_ID = "DARTSESSID";
8 8
9 // A _HttpSession is a node in a double-linked list, with _next and _prev being 9 // A _HttpSession is a node in a double-linked list, with _next and _prev being
10 // the previous and next pointers. 10 // the previous and next pointers.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // Private class used to manage all the active sessions. The sessions are stored 65 // Private class used to manage all the active sessions. The sessions are stored
66 // in two ways: 66 // in two ways:
67 // 67 //
68 // * In a map, mapping from ID to HttpSession. 68 // * In a map, mapping from ID to HttpSession.
69 // * In a linked list, used as a timeout queue. 69 // * In a linked list, used as a timeout queue.
70 class _HttpSessionManager { 70 class _HttpSessionManager {
71 _HttpSessionManager() : _sessions = {}; 71 _HttpSessionManager() : _sessions = {};
72 72
73 String createSessionId() { 73 String createSessionId() {
74 const int _KEY_LENGTH = 16; // 128 bits. 74 const int _KEY_LENGTH = 16; // 128 bits.
75 var data = _getRandomBytes(_KEY_LENGTH); 75 var data = _IOCrypto.getRandomBytes(_KEY_LENGTH);
76 return CryptoUtils.bytesToHex(data); 76 return CryptoUtils.bytesToHex(data);
77 } 77 }
78 78
79 _HttpSession getSession(String id) { 79 _HttpSession getSession(String id) {
80 return _sessions[id]; 80 return _sessions[id];
81 } 81 }
82 82
83 _HttpSession createSession() { 83 _HttpSession createSession() {
84 var id = createSessionId(); 84 var id = createSessionId();
85 // TODO(ajohnsen): Consider adding a limit and throwing an exception. 85 // TODO(ajohnsen): Consider adding a limit and throwing an exception.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 _timer.cancel(); 165 _timer.cancel();
166 _timer = null; 166 _timer = null;
167 } 167 }
168 } 168 }
169 169
170 Map<String, _HttpSession> _sessions; 170 Map<String, _HttpSession> _sessions;
171 int _sessionTimeout = 20 * 60; // 20 mins. 171 int _sessionTimeout = 20 * 60; // 20 mins.
172 _HttpSession _head; 172 _HttpSession _head;
173 _HttpSession _tail; 173 _HttpSession _tail;
174 Timer _timer; 174 Timer _timer;
175
176 external static Uint8List _getRandomBytes(int count);
177 } 175 }
178 176
OLDNEW
« no previous file with comments | « sdk/lib/io/common.dart ('k') | sdk/lib/io/websocket_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698