Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v8.9.3 proposal #17532

Merged
merged 20 commits into from
Dec 8, 2017
Merged

v8.9.3 proposal #17532

merged 20 commits into from
Dec 8, 2017

Commits on Dec 7, 2017

  1. doc: warn against filling buffer with invalid data

    PR-URL: #17428
    Backport-PR-URL: #17467
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
    Reviewed-By: Tobias Nießen <tniessen@tnie.de>
    Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
    Reviewed-By: Michaël Zasso <targos@protonmail.com>
    addaleax authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    db09f24 View commit details
    Browse the repository at this point in the history
  2. buffer: zero-fill buffer allocated with invalid content

    Zero-fill when `Buffer.alloc()` receives invalid fill data.
    
    A solution like #17427 which switches
    to throwing makes sense, but is likely a breaking change.
    
    This suggestion leaves the behaviour of `buffer.fill()` untouched,
    since any change to it would be a breaking change, and lets
    `Buffer.alloc()` check whether any filling took place or not.
    
    PR-URL: #17428
    Backport-PR-URL: #17467
    Refs: #17427
    Refs: #17423
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
    Reviewed-By: Tobias Nießen <tniessen@tnie.de>
    Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
    Reviewed-By: Michaël Zasso <targos@protonmail.com>
    addaleax authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    b05ef97 View commit details
    Browse the repository at this point in the history
  3. deps: upgrade openssl sources to 1.0.2n

    This replaces all sources of openssl-1.0.2n.tar.gz into
    deps/openssl/openssl
    
    PR-URL: #17526
    Reviewed-By: Tobias Nießen <tniessen@tnie.de>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Myles Borins <myles.borins@gmail.com>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
    shigeki authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    9fdd3bd View commit details
    Browse the repository at this point in the history
  4. deps: copy all openssl header files to include dir

    All symlink files in `deps/openssl/openssl/include/openssl/`
    are removed and replaced with real header files to avoid
    issues on Windows. Two files of opensslconf.h in crypto and
    include dir are replaced to refer config/opensslconf.h.
    
    PR-URL: #17526
    Reviewed-By: Tobias Nießen <tniessen@tnie.de>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Myles Borins <myles.borins@gmail.com>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
    shigeki authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    afad1f2 View commit details
    Browse the repository at this point in the history
  5. deps: fix openssl assembly error on ia32 win32

    `x86masm.pl` was mistakenly using .486 instruction set, why `cpuid` (and
    perhaps others) are requiring .686 .
    
    Fixes: #589
    PR-URL: #1389
    Reviewed-By: Fedor Indutny <fedor@indutny.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
    indutny authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    b5552c8 View commit details
    Browse the repository at this point in the history
  6. deps: fix asm build error of openssl in x86_win32

    See
    https://mta.openssl.org/pipermail/openssl-dev/2015-February/000651.html
    
    iojs needs to stop using masm and move to nasm or yasm on Win32.
    
    Fixes: #589
    PR-URL: #1389
    Reviewed-By: Fedor Indutny <fedor@indutny.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Shigeki Ohtsu authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    a85f94b View commit details
    Browse the repository at this point in the history
  7. openssl: fix keypress requirement in apps on win32

    Reapply b910613 .
    
    Fixes: #589
    PR-URL: #1389
    Reviewed-By: Fedor Indutny <fedor@indutny.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Shigeki Ohtsu authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    7d68488 View commit details
    Browse the repository at this point in the history
  8. deps: add -no_rand_screen to openssl s_client

    In openssl s_client on Windows, RAND_screen() is invoked to initialize
    random state but it takes several seconds in each connection.
    This added -no_rand_screen to openssl s_client on Windows to skip
    RAND_screen() and gets a better performance in the unit test of
    test-tls-server-verify.
    Do not enable this except to use in the unit test.
    
    Fixes: #1461
    PR-URL: #1836
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Shigeki Ohtsu authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    e6c308e View commit details
    Browse the repository at this point in the history
  9. deps: update openssl asm and asm_obsolete files

    Regenerate asm files with Makefile and CC=gcc and ASM=nasm where gcc
    version was 5.4.0 and nasm version was 2.11.08.
    
    Also asm files in asm_obsolete dir to support old compiler and
    assembler are regenerated without CC and ASM envs.
    
    PR-URL: #17526
    Reviewed-By: Tobias Nießen <tniessen@tnie.de>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Myles Borins <myles.borins@gmail.com>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
    shigeki authored and MylesBorins committed Dec 7, 2017
    Configuration menu
    Copy the full SHA
    18652b6 View commit details
    Browse the repository at this point in the history

Commits on Dec 8, 2017

  1. http2: allocate on every chunk send

    Previously, we were using a shared stack allocated buffer to hold
    the serialized outbound data but that runs into issues if the
    outgoing stream does not write or copy immediately. Instead,
    allocate a buffer each time. Slight additional overhead here,
    but necessary.
    
    Later on, once we've analyzed this more, we might be able to
    switch to a stack allocated ring or slab buffer but that's a
    bit more complicated than what we strictly need right now.
    
    PR-URL: #16669
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    Reviewed-By: Khaidi Chu <i@2333.moe>
    Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    319beaf View commit details
    Browse the repository at this point in the history
  2. src: add method to compute storage in WriteWrap

    `WriteWrap` instances may contain extra storage space.
    `self_size()` returns the size of the *entire* struct, member fields as
    well as storage space, so it is not an accurate measure for the
    storage space available.
    
    Add a method `ExtraSize()` (like the existing `Extra()` for accessing
    the storage memory) that yields the wanted value, and use it
    in the HTTP2 impl to fix a crash.
    
    PR-URL: #16727
    Refs: #16669
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    addaleax authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    26b43c8 View commit details
    Browse the repository at this point in the history
  3. http2: refactor multiple internals

    * eliminate pooling of Nghttp2Stream instances. After testing,
      the pooling is not having any tangible benefit
      and makes things more complicated. Simplify. Simplify.
    
    * refactor inbound headers
    
    * Enforce MAX_HEADERS_LIST setting and limit the number of header
      pairs accepted from the peer. Use the ENHANCE_YOUR_CALM error
      code when receiving either too many headers or too many octets.
      Use a vector to store the headers instead of a queue
    
    PR-URL: #16676
    Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    22ee960 View commit details
    Browse the repository at this point in the history
  4. http2: simplify subsequent rstStream calls

    Do not call destroy each time rstStream is called since the
    first call (or receipt of rst frame) will always trigger
    destroy. Expand existing test for this behaviour.
    
    PR-URL: #16753
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    apapirovski authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    d7f37ce View commit details
    Browse the repository at this point in the history
  5. test: fix flaky test-http2-create-client-connect

    The first group of tests makes one more connection and leave the server
    alive for longer. Otherwise the test is just catching that the server
    has closed the socket, depending on timing.
    
    This does not quite make the test pass yet, however. There are some
    quirks with how the http2 code handles errors which actually affect
    1.0.2 as well.
    
    PR-URL: #16130
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Rod Vagg <rod@vagg.org>
    davidben authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    99d775c View commit details
    Browse the repository at this point in the history
  6. src: fix -Winconsistent-missing-override warning

    Fix a compiler warning that was introduced in commit 4db1bc8
    ("http2: allocate on every chunk send") by adding an `override` keyword.
    
    PR-URL: #16726
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
    Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    Reviewed-By: Michaël Zasso <targos@protonmail.com>
    bnoordhuis authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    8e8fac2 View commit details
    Browse the repository at this point in the history
  7. http2: major update to internals

    This update does several significant things:
    
    1. It eliminates the base Nghttp2* classes and folds those
       in to node::http2::Http2Session and node::http2::Http2Stream
    2. It makes node::http2::Http2Stream a StreamBase instance and
       sends that out to JS-land to act as the [kHandle] for the
       JavaScript Http2Stream class.
    3. It shifts some of the callbacks from C++ off of the JavaScript
       Http2Session class to the Http2Stream class.
    4. It refactors the data provider structure for FD and Stream
       based sending to help encapsulate those functions easier
    5. It streamlines some of the functions at the C++ layer to
       eliminate now unnecessary redirections
    6. It cleans up node_http2.cc for better readability and
       maintainability
    7. It refactors some of the debug output
    8. Because Http2Stream instances are now StreamBases, they are
       now also trackable using async-hooks
    9. The Stream::OnRead algorithm has been simplified with a
       couple bugs fixed.
    10. I've eliminated node_http2_core.h and node_http2_core-inl.h
    11. Detect invalid handshake a report protocol error to session
    12. Refactor out of memory error, improve other errors
    13. Add Http2Session.prototype.ping
    
    PR-URL: #17105
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    Reviewed-By: Sebastiaan Deckers <sebdeckers83@gmail.com>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    a5e3ba2 View commit details
    Browse the repository at this point in the history
  8. http2: general cleanups in core.js

    * fixup js debug messages
    * simplify and improve rstStream
    * improve and simplify _read
    * simplify and improve priority
    * simplify on ready a bit
    * simplify and improve respond/push
    * reduce duplication with _unrefActive
    * simplify stream close handling
    
    PR-URL: #17209
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    bd035d7 View commit details
    Browse the repository at this point in the history
  9. http2: use 'close' event instead of 'streamClosed'

    PR-URL: #17328
    Fixes: #15303
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Sebastiaan Deckers <sebdeckers83@gmail.com>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    aba3544 View commit details
    Browse the repository at this point in the history
  10. http2: use correct connect event for TLS Socket

    PR-URL: #17328
    Fixes: #15303
    Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
    Reviewed-By: Sebastiaan Deckers <sebdeckers83@gmail.com>
    jasnell authored and MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    42f09ed View commit details
    Browse the repository at this point in the history
  11. 2017-12-08, Version 8.9.3 'Carbon' (LTS)

    This is a security release. All Node.js users should consult the
    security release summary at
    https://nodejs.org/en/blog/vulnerability/december-2017-security-releases/
    for details on patched vulnerabilities.
    
    Fixes for the following CVEs are included in this release:
    
    * CVE-2017-15896
    * CVE-2017-15897
    * CVE-2017-3738 (from the openssl project)
    
    Notable Changes:
    
    * buffer:
      * buffer allocated with an invalid content will now be zero filled
        (Anna Henningsen)
        #17428
    * deps:
      * openssl updated to 1.0.2n (Shigeki Ohtsu)
        #17526
    
    PR-URL: #17532
    MylesBorins committed Dec 8, 2017
    Configuration menu
    Copy the full SHA
    8a44289 View commit details
    Browse the repository at this point in the history