diff --git a/.mailmap b/.mailmap index 2320600463c1cb..127e1782b394a2 100644 --- a/.mailmap +++ b/.mailmap @@ -26,6 +26,7 @@ Andreas Offenhaeuser anoff Andy Bettisworth Angel Stoyanov atstojanov Anna Henningsen +Anna Henningsen Anna Magdalena Kedzierska AnnaMag Antoine Amara Antoine AMARA Aria Stewart @@ -44,8 +45,10 @@ Ben Noordhuis Ben Noordhuis Ben Taber Benjamin Coe +Benjamin Coe Benjamin Fleischer Benjamin Fleischer -Benjamin Gruenbaum +Benjamin Gruenbaum +Benjamin Gruenbaum Benjamin Waters Bert Belder Bert Belder @@ -158,6 +161,7 @@ Imran Iqbal Ionică Bizău Isaac Z. Schlueter Isaac Z. Schlueter +Isaac Z. Schlueter isaacs Isuru Siriwardana isurusiri Italo A. Casas Jackson Tian @@ -304,6 +308,7 @@ Ricardo Sánchez Gregorio richnologies Rick Olson Rob Adelmann Rob Adelmann adelmann +Robert Nagy Robert Nagy Rod Machen Roman Klauke Roman Reiss @@ -323,12 +328,14 @@ Sam Mikes Sam P Gallagher-Bishop Sam Shull Sam Shull -Sambasiva Suda Sam Roberts +Samantha Sample = <=> +Sambasiva Suda San-Tai Hsu Santiago Gimeno Sarah Meyer sarahmeyer Sartrey Lee sartrey +Saúl Ibarra Corretgé Scott Blomquist Segu Riluvan Sergey Kryzhanovsky @@ -418,6 +425,7 @@ Yazhong Liu Yorkie Liu Yingchen Xue Yongsheng Zhang Yongsheng Zhang <17367077526@163.com> +Yongsheng Zhang Yoshihiro KIKUCHI Yosuke Furukawa Yuichiro MASUI diff --git a/AUTHORS b/AUTHORS index 6d3ab499f822a2..908ef597485387 100644 --- a/AUTHORS +++ b/AUTHORS @@ -538,7 +538,7 @@ Anton Khlynovskiy Nicolas Talle Mike Pennisi Maxwell Krohn -Saúl Ibarra Corretgé +Saúl Ibarra Corretgé Greg Brail Shuhei Kagawa Josh Dague @@ -707,7 +707,7 @@ Bruno Jouhier René Kooi Petka Antonov Ryan Scheel -Benjamin Gruenbaum +Benjamin Gruenbaum Pavel Medvedev Russell Dempsey Tierney Cyren @@ -2683,5 +2683,169 @@ Michael Wei Alexander Sattelmaier Avi ד Thomas +Aymen Naghmouchi +himself65 +Geir Hauge +Patrick Gansterer +Nicolas Moteau +Anthony Tuininga +Yann Hamon +Ben Swinburne +Colin Prince +TJKoury +dnlup +Hang Jiang +Vladislav Kaminsky +Daiki Ihara +toshi1127 +nd-02110114 +dkundel +Evan Plaice +simon3000 +Marcos Casagrande +Ruwan Geeganage +Maël Nison +Gerson Niño +freestraws +Daniel Beckert +Rivaldo Junior +Rongjian Zhang +tonyhty +jyjunyz +tongshouyu +lixin.atom +luoyu +xinyulee +hardfist <1562502418@qq.com> +shenchen +zhoujiamin +Chenxi Yuan +nilianzhu +wuchenkai +xuqinggang +XGHeaven +sinoon +Yaphet Ye +OneNail +陈健 +heben +sujunfei +imhype <543717080@qq.com> +ptaylor +Boxuan Li +Aditya Pratap Singh +Eugene Ostroukhov +Preveen Padmanabhan +Benjamin Ki +Daniel Nalborczyk +Alba Mendez +zero1five +Gaelan +Jacob +himself65 +Dan Beglin +Anish Asrani +teams2ua +oksana +Grigorii K. Shartsev +Kopachyov Vitaliy +MurkyMeow +Evgenii Shchepotev +martyns0n +Levin Eugene +Alexander Avakov +Grigory Gorshkov +Keroosha +Tariq Ramlall +Alex Pry +Yuriy Vasiyarov +Mikhail Kuklin +went.out +Kyle Zhang +Alex Temny +Alex Aubuchon +Samuel Attard +rexagod +Antonio Kukas +murgatroid99 +Saagar Jha +vmarchaud +Milad Farazmand +mutao +Samantha Sample +nicolasrestrepo +Angie M. Delgado +Alex Ramirez +Duvan Monsalve +Luis Gallon +kball +MistyBlunch +Laura Ciro +Yomar +raveneyex +khriztianmoreno +David Sánchez +melinamejia95 +David Carlier +Benoît Zugmeyer +Julian Correa +Felipe +Juan Roa +Ivan Villa +Caleb ツ Everett +Miken +Eugene Ostroukhov +Gabriela Niño +Mike MacCana +Tim Baverstock +Walle Cyril +Xu Meng +Samuel Attard +Ben L. Titzer +Ojasvi Monga +Shajan Jacob +Austin Wright +Vickodev +Karen He <32376376+baekrxnn@users.noreply.github.com> +Harshitha KP +Tanner Stirrat +h3knix +Cotton Hou +Edward Vielmetti +Micha Hanselmann +Luca Lindhorst +Manuel Ochoa Loaiza +Juan Bedoya +Andres Bedoya +elyalvarado +Felipe Duitama +Alejandro Nanez +Jeroen Ooms +PaulBags <19583196+PaulBags@users.noreply.github.com> +EduardoRFS +Natalie Fearnley +pi1024e +Giorgos Ntemiris +Rainer Poisel +Andrew Hughes +Tony Brix +Anas Aboureada +MattIPv4 +David Guttman +Xavier Stouder +ran +Nick Schonning +Chetan Karande +Bradley Farias +Nimit Aggarwal +Devendra Satram +AtticusYang +Kamil Rytarowski +Aditya +Denis Zavershinskiy +Levhita +claudiahdz +Geoffrey Booth +Javier Ledezma # Generated by tools/update-authors.js diff --git a/CHANGELOG.md b/CHANGELOG.md index c6b3fd29f2cf48..b6e21279f63122 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,8 @@ release. -12.11.0
+12.11.1
+12.11.0
12.10.0
12.9.1
12.9.0
diff --git a/Makefile b/Makefile index 5898541735289d..0a5177d1c3e7d6 100644 --- a/Makefile +++ b/Makefile @@ -1037,7 +1037,6 @@ $(TARBALL): release-only $(NODE_EXE) doc $(RM) -r $(TARNAME)/deps/uv/samples $(RM) -r $(TARNAME)/deps/uv/test $(RM) -r $(TARNAME)/deps/v8/samples - $(RM) -r $(TARNAME)/deps/v8/test $(RM) -r $(TARNAME)/deps/v8/tools/profviz $(RM) -r $(TARNAME)/deps/v8/tools/run-tests.py $(RM) -r $(TARNAME)/deps/zlib/contrib # too big, unused @@ -1049,6 +1048,8 @@ $(TARBALL): release-only $(NODE_EXE) doc $(RM) -r $(TARNAME)/tools/node_modules $(RM) -r $(TARNAME)/tools/osx-* $(RM) -r $(TARNAME)/tools/osx-pkg.pmdoc + find $(TARNAME)/deps/v8/test/* -type d ! -regex '.*/test/torque$$' | xargs $(RM) -r + find $(TARNAME)/deps/v8/test -type f ! -regex '.*/test/torque/.*' | xargs $(RM) find $(TARNAME)/ -name ".eslint*" -maxdepth 2 | xargs $(RM) find $(TARNAME)/ -type l | xargs $(RM) # annoying on windows tar -cf $(TARNAME).tar $(TARNAME) diff --git a/SECURITY.md b/SECURITY.md index a82c5f48ceac12..7e984b7ba36872 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,37 +1,75 @@ # Security -If you find a security vulnerability in Node.js, please report it to -security@nodejs.org. Please withhold public disclosure until after the security -team has addressed the vulnerability. +## Reporting a Bug in Node.js -The security team will acknowledge your email within 24 hours. You will receive -a more detailed response within 48 hours. +Report security bugs in Node.js via [HackerOne](https://hackerone.com/nodejs). -There are no hard and fast rules to determine if a bug is worth reporting as a -security issue. Here are some examples of past issues and what the Security -Response Team thinks of them. When in doubt, please do send us a report -nonetheless. +Your report will be acknowledged within 24 hours, and you’ll receive a more +detailed response to your report within 48 hours indicating the next steps in +handling your submission. -## Public disclosure preferred +After the initial reply to your report, the security team will endeavor to keep +you informed of the progress being made towards a fix and full announcement, +and may ask for additional information or guidance surrounding the reported +issue. These updates will be sent at least every five days; in practice, this +is more likely to be every 24-48 hours. -* [#14519](https://github.com/nodejs/node/issues/14519): _Internal domain - function can be used to cause segfaults_. Requires the ability to execute - arbitrary JavaScript code. That is already the highest level of privilege - possible. +### Node.js Bug Bounty Program -## Private disclosure preferred +The Node.js project engages in an official bug bounty program for security +researchers and responsible public disclosures. The program is managed through +the HackerOne platform. See for further details. -* [CVE-2016-7099](https://nodejs.org/en/blog/vulnerability/september-2016-security-releases/): - _Fix invalid wildcard certificate validation check_. This was a high-severity - defect. It caused Node.js TLS clients to accept invalid wildcard certificates. +## Reporting a Bug in a third party module -* [#5507](https://github.com/nodejs/node/pull/5507): _Fix a defect that makes - the CacheBleed Attack possible_. Many, though not all, OpenSSL vulnerabilities - in the TLS/SSL protocols also affect Node.js. +Security bugs in third party modules should be reported to their respective +maintainers and should also be coordinated through the Node Ecosystem Security +Team via [HackerOne](https://hackerone.com/nodejs-ecosystem). -* [CVE-2016-2216](https://nodejs.org/en/blog/vulnerability/february-2016-security-releases/): - _Fix defects in HTTP header parsing for requests and responses that can allow - response splitting_. This was a remotely-exploitable defect in the Node.js - HTTP implementation. +Details regarding this process can be found in the +[Security Working Group repository](https://github.com/nodejs/security-wg/blob/master/processes/third_party_vuln_process.md). -When in doubt, please do send us a report. +Thank you for improving the security of Node.js and its ecosystem. Your efforts +and responsible disclosure are greatly appreciated and will be acknowledged. + +## Disclosure Policy + +Here is the security disclosure policy for Node.js + +* The security report is received and is assigned a primary handler. This + person will coordinate the fix and release process. The problem is confirmed + and a list of all affected versions is determined. Code is audited to find + any potential similar problems. Fixes are prepared for all releases which are + still under maintenance. These fixes are not committed to the public + repository but rather held locally pending the announcement. + +* A suggested embargo date for this vulnerability is chosen and a CVE (Common + Vulnerabilities and Exposures (CVE®)) is requested for the vulnerability. + +* On the embargo date, the Node.js security mailing list is sent a copy of the + announcement. The changes are pushed to the public repository and new builds + are deployed to nodejs.org. Within 6 hours of the mailing list being + notified, a copy of the advisory will be published on the Node.js blog. + +* Typically the embargo date will be set 72 hours from the time the CVE is + issued. However, this may vary depending on the severity of the bug or + difficulty in applying a fix. + +* This process can take some time, especially when coordination is required + with maintainers of other projects. Every effort will be made to handle the + bug in as timely a manner as possible; however, it’s important that we follow + the release process above to ensure that the disclosure is handled in a + consistent manner. + +## Receiving Security Updates + +Security notifications will be distributed via the following methods. + +* +* + +## Comments on this Policy + +If you have suggestions on how this process could be improved please submit a +[pull request](https://github.com/nodejs/nodejs.org) or +[file an issue](https://github.com/nodejs/security-wg/issues/new) to discuss. diff --git a/deps/icu-small/source/data/in/icudt64l.dat b/deps/icu-small/source/data/in/icudt64l.dat index 113b88a4804805..2ff9d277c58be3 100644 Binary files a/deps/icu-small/source/data/in/icudt64l.dat and b/deps/icu-small/source/data/in/icudt64l.dat differ diff --git a/doc/api/cli.md b/doc/api/cli.md index 6bc82659e48a3f..0ac58dba3510fb 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -395,12 +395,13 @@ Specify ways of the inspector web socket url exposure. By default inspector websocket url is available in stderr and under `/json/list` endpoint on `http://host:port/json/list`. -### `--loader=file` +### `--experimental-loader=module` -Specify the `file` of the custom [experimental ECMAScript Module][] loader. +Specify the `module` of a custom [experimental ECMAScript Module][] loader. +`module` may be either a path to a file, or an ECMAScript Module name. ### `--max-http-header-size=size` * `algorithm` {string} -* `key` {string | Buffer | TypedArray | DataView} -* `iv` {string | Buffer | TypedArray | DataView} +* `key` {string | Buffer | TypedArray | DataView | KeyObject} +* `iv` {string | Buffer | TypedArray | DataView | null} * `options` {Object} [`stream.transform` options][] * Returns: {Decipher} diff --git a/doc/api/esm.md b/doc/api/esm.md index b811f2c4cf7d3b..580528401629e2 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -632,7 +632,7 @@ would provide the exports interface for the instantiation of `module.wasm`. To customize the default module resolution, loader hooks can optionally be -provided via a `--loader ./loader-name.mjs` argument to Node.js. +provided via a `--experimental-loader ./loader-name.mjs` argument to Node.js. When hooks are used they only apply to ES module loading and not to any CommonJS modules loaded. @@ -731,7 +731,7 @@ export async function resolve(specifier, With this loader, running: ```console -NODE_OPTIONS='--experimental-modules --loader ./custom-loader.mjs' node x.js +NODE_OPTIONS='--experimental-modules --experimental-loader ./custom-loader.mjs' node x.js ``` would load the module `x.js` as an ES module with relative resolution support diff --git a/doc/api/events.md b/doc/api/events.md index 8d409582329c14..9b22d33e12caa0 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -709,7 +709,7 @@ The `Promise` will resolve with an array of all the arguments emitted to the given event. This method is intentionally generic and works with the web platform -[EventTarget](WHATWG-EventTarget) interface, which has no special +[EventTarget][WHATWG-EventTarget] interface, which has no special `'error'` event semantics and does not listen to the `'error'` event. ```js @@ -739,7 +739,8 @@ async function run() { run(); ``` -[WHATWG-EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) + +[WHATWG-EventTarget]: https://dom.spec.whatwg.org/#interface-eventtarget [`--trace-warnings`]: cli.html#cli_trace_warnings [`EventEmitter.defaultMaxListeners`]: #events_eventemitter_defaultmaxlisteners [`domain`]: domain.html diff --git a/doc/api/fs.md b/doc/api/fs.md index 8aa2d6d8c04e1a..7ea6835387719b 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -2086,8 +2086,8 @@ changes: --> * `fd` {integer} -* `atime` {integer} -* `mtime` {integer} +* `atime` {number|string|Date} +* `mtime` {number|string|Date} Synchronous version of [`fs.futimes()`][]. Returns `undefined`. @@ -3249,22 +3249,32 @@ changes: * `callback` {Function} * `err` {Error} -Asynchronous symlink(2). No arguments other than a possible exception are given -to the completion callback. The `type` argument is only available on Windows -and ignored on other platforms. It can be set to `'dir'`, `'file'`, or -`'junction'`. If the `type` argument is not set, Node will autodetect `target` -type and use `'file'` or `'dir'`. If the `target` does not exist, `'file'` will -be used. Windows junction points require the destination path to be absolute. -When using `'junction'`, the `target` argument will automatically be normalized -to absolute path. +Asynchronous symlink(2) which creates the link called `path` pointing to +`target`. No arguments other than a possible exception are given to the +completion callback. -Here is an example below: +The `type` argument is only available on Windows and ignored on other platforms. +It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is +not set, Node will autodetect `target` type and use `'file'` or `'dir'`. If the +`target` does not exist, `'file'` will be used. Windows junction points require +the destination path to be absolute. When using `'junction'`, the `target` +argument will automatically be normalized to absolute path. + +Relative targets are relative to the link’s parent directory. ```js -fs.symlink('./foo', './new-port', callback); +fs.symlink('./mew', './example/mewtwo', callback); ``` -It creates a symbolic link named "new-port" that points to "foo". +The above example creates a symbolic link `mewtwo` in the `example` which points +to `mew` in the same directory: + +```bash +$ tree example/ +example/ +├── mew +└── mewtwo -> ./mew +``` ## fs.symlinkSync(target, path[, type]) * `path` {string|Buffer|URL} -* `atime` {integer} -* `mtime` {integer} +* `atime` {number|string|Date} +* `mtime` {number|string|Date} Returns `undefined`. @@ -4243,7 +4253,7 @@ then resolves the `Promise` with no arguments upon success. This function does not work on AIX versions before 7.1, it will resolve the `Promise` with an error using code `UV_ENOSYS`. -#### filehandle.write(buffer, offset, length, position) +#### filehandle.write(buffer[, offset[, length[, position]]]) diff --git a/doc/api/http.md b/doc/api/http.md index d1a2b200f79c06..bce8c06db82faf 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -1770,7 +1770,7 @@ added: v0.11.6 The raw request/response trailer keys and values exactly as they were received. Only populated at the `'end'` event. -### message.setTimeout(msecs, callback) +### message.setTimeout(msecs[, callback]) diff --git a/doc/api/inspector.md b/doc/api/inspector.md index c469ed9c5dbc45..3d9a956f095ede 100644 --- a/doc/api/inspector.md +++ b/doc/api/inspector.md @@ -216,7 +216,7 @@ session.on('HeapProfiler.addHeapSnapshotChunk', (m) => { }); session.post('HeapProfiler.takeHeapSnapshot', null, (err, r) => { - console.log('Runtime.takeHeapSnapshot done:', err, r); + console.log('HeapProfiler.takeHeapSnapshot done:', err, r); session.disconnect(); fs.closeSync(fd); }); diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 83ec6e66b63984..6ae0f44643c3b1 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -161,7 +161,7 @@ to recompile for new versions of Node.js which are listed as supporting a later version. | | 1 | 2 | 3 | 4 | 5 | -|:-----:|:-------:|:--------:|:--------:|:--------:|:---------:| +|-------|---------|----------|----------|----------|-----------| | v6.x | | | v6.14.2* | | | | v8.x | v8.0.0* | v8.10.0* | v8.11.2 | v8.16.0 | | | v9.x | v9.0.0* | v9.3.0* | v9.11.0* | | | diff --git a/doc/api/process.md b/doc/api/process.md index 57b4eae02b2faa..bf632a199000ce 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -2244,7 +2244,7 @@ undefined true > process.emitWarning('test', 'DeprecationWarning'); Thrown: -{ [DeprecationWarning: test] name: 'DeprecationWarning' } +[DeprecationWarning: test] { name: 'DeprecationWarning' } ``` ## process.title diff --git a/doc/api/stream.md b/doc/api/stream.md index 5bfb8f5ea1eba4..eb4b0b82740a8f 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -1587,6 +1587,10 @@ async function run() { run().catch(console.error); ``` +`stream.pipeline()` will call `stream.destroy(err)` on all streams except: +* `Readable` streams which have emitted `'end'` or `'close'`. +* `Writable` streams which have emitted `'finish'` or `'close'`. + `stream.pipeline()` leaves dangling event listeners on the streams after the `callback` has been invoked. In the case of reuse of streams after failure, this can cause event listener leaks and swallowed errors. @@ -1876,13 +1880,11 @@ or write buffered data before a stream ends. #### Errors While Writing -It is recommended that errors occurring during the processing of the -`writable._write()` and `writable._writev()` methods are reported by invoking -the callback and passing the error as the first argument. This will cause an -`'error'` event to be emitted by the `Writable`. Throwing an `Error` from within -`writable._write()` can result in unexpected and inconsistent behavior depending -on how the stream is being used. Using the callback ensures consistent and -predictable handling of errors. +Errors occurring during the processing of the [`writable._write()`][], +[`writable._writev()`][] and [`writable._final()`] methods must be propagated +by invoking the callback and passing the error as the first argument. +Throwing an `Error` from within these methods or manually emitting an `'error'` +event results in undefined behavior. If a `Readable` stream pipes into a `Writable` stream when `Writable` emits an error, the `Readable` stream will be unpiped. @@ -2147,8 +2149,8 @@ class SourceWrapper extends Readable { } ``` -The `readable.push()` method is intended be called only by `Readable` -implementers, and only from within the `readable._read()` method. +The `readable.push()` method is used to push the content +into the internal buffer. It can be driven by the `readable._read()` method. For streams not operating in object mode, if the `chunk` parameter of `readable.push()` is `undefined`, it will be treated as empty string or @@ -2156,24 +2158,22 @@ buffer. See [`readable.push('')`][] for more information. #### Errors While Reading -It is recommended that errors occurring during the processing of the -`readable._read()` method are emitted using the `'error'` event rather than -being thrown. Throwing an `Error` from within `readable._read()` can result in -unexpected and inconsistent behavior depending on whether the stream is -operating in flowing or paused mode. Using the `'error'` event ensures -consistent and predictable handling of errors. +Errors occurring during processing of the [`readable._read()`][] must be +propagated through the [`readable.destroy(err)`][readable-_destroy] method. +Throwing an `Error` from within [`readable._read()`][] or manually emitting an +`'error'` event results in undefined behavior. - ```js const { Readable } = require('stream'); const myReadable = new Readable({ read(size) { - if (checkSomeErrorCondition()) { - process.nextTick(() => this.emit('error', err)); - return; + const err = checkSomeErrorCondition(); + if (err) { + this.destroy(err); + } else { + // Do some work. } - // Do some work. } }); ``` @@ -2772,6 +2772,7 @@ contain multi-byte characters. [`process.stderr`]: process.html#process_process_stderr [`process.stdin`]: process.html#process_process_stdin [`process.stdout`]: process.html#process_process_stdout +[`readable._read()`]: #stream_readable_read_size_1 [`readable.push('')`]: #stream_readable_push [`readable.setEncoding()`]: #stream_readable_setencoding_encoding [`stream.Readable.from()`]: #stream_stream_readable_from_iterable_options @@ -2782,6 +2783,9 @@ contain multi-byte characters. [`stream.uncork()`]: #stream_writable_uncork [`stream.unpipe()`]: #stream_readable_unpipe_destination [`stream.wrap()`]: #stream_readable_wrap_stream +[`writable._final()`]: #stream_writable_final_callback +[`writable._write()`]: #stream_writable_write_chunk_encoding_callback_1 +[`writable._writev()`]: #stream_writable_writev_chunks_callback [`writable.cork()`]: #stream_writable_cork [`writable.end()`]: #stream_writable_end_chunk_encoding_callback [`writable.uncork()`]: #stream_writable_uncork diff --git a/doc/api/tls.md b/doc/api/tls.md index 24d826191f675a..68cf5e36bc9f40 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -842,18 +842,6 @@ See [SSL_CIPHER_get_name](https://www.openssl.org/docs/man1.1.1/man3/SSL_CIPHER_get_name.html) for more information. -### tlsSocket.getSharedSigalgs() - - -* Returns: {Array} List of signature algorithms shared between the server and -the client in the order of decreasing preference. - -See -[SSL_get_shared_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) -for more information. - ### tlsSocket.getEphemeralKeyInfo() + +* Returns: {Array} List of signature algorithms shared between the server and +the client in the order of decreasing preference. + +See +[SSL_get_shared_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) +for more information. + ### tlsSocket.getTLSTicket()