This matches the behavior of net.Socket
CryptoStream.prototype.end = function(d) {
- if (!this.writable) {
- throw new Error('CryptoStream is not writable');
- }
-
- if (this.pair._done) return;
+ if (this.writable) {
+ if (this.pair._done) return;
- if (d) {
- this.write(d);
- }
+ if (d) {
+ this.write(d);
+ }
- this._pending.push(END_OF_FILE);
- this._pendingCallbacks.push(null);
+ this._pending.push(END_OF_FILE);
+ this._pendingCallbacks.push(null);
- // If this is an encrypted stream then we need to disable further 'data'
- // events.
+ // If this is an encrypted stream then we need to disable further 'data'
+ // events.
- this.writable = false;
+ this.writable = false;
- this.pair._cycle();
+ this.pair._cycle();
+ }
};