3002 Commits
Author SHA1 Message Date
Rod Vagg d8e27ec30a test: mark dgram-multicast-multi-process as flaky
PR-URL: https://github.com/nodejs/node/pull/9150
Reviewed-By: João Reis <reis@janeasystems.com>
2016-10-29 18:09:55 +11:00
Сковорода Никита Андреевич 38d7258d89 buffer: zero-fill uninitialized bytes in .concat()
This makes sure that no uninitialized bytes are leaked when the specified
`totalLength` input value is greater than the actual total length of the
specified buffers array, e.g. in Buffer.concat([Buffer.alloc(0)], 100).

PR-URL: https://github.com/nodejs/node-private/pull/66
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
2016-09-28 00:09:14 +10:00
Ben Noordhuis 9dbde2fc88 lib: make tls.checkServerIdentity() more strict
CVE-2016-7099

PR-URL: https://github.com/nodejs/node-private/pull/61
Reviewed-By: Rod Vagg <rod@vagg.org>
2016-09-28 00:07:00 +10:00
Evan Lucas 6d977902bd http: check reason chars in writeHead
Previously, the reason argument passed to ServerResponse#writeHead was
not being properly validated.  One could pass CRLFs which could lead to
http response splitting. This commit changes the behavior to throw an
error in the event any invalid characters are included in the reason.

CVE-2016-5325

PR-URL: https://github.com/nodejs/node-private/pull/47
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Douglas Wilson <doug@somethingdoug.com>
2016-09-28 00:02:05 +10:00
Evan Lucas ad470e496b http: disallow sending obviously invalid status codes
Back port of
https://github.com/nodejs/node/commit/7e9b0dd6949aaa6afda4da9f41e1d60d9b
3d6225 to v0.12.

PR-URL: https://github.com/nodejs/node-private/pull/47
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Douglas Wilson <doug@somethingdoug.com>
2016-09-28 00:00:05 +10:00
Ben Noordhuis 8138055c88 test: fix test failure due to expired certificates
Back-port commit 76f40f7 ("test: stronger crypto in test fixtures") from
the master branch.

Pushes back the expiration date of test/fixtures/keys/ca2-crl.pem to
2018, fixing a CRL_HAS_EXPIRED error in simple/test-tls-server-verify.

Fixes: https://github.com/nodejs/node/issues/7194
PR-URL: https://github.com/nodejs/node/pull/7195
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
2016-06-23 23:24:34 +10:00
Gibson Fahnestock ab907eb5a8 test: skip cluster-disconnect-race on Windows
PR-URL: https://github.com/nodejs/node/pull/5621
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Alexis Campailla <orangemocha@nodejs.org>
2016-03-16 12:52:27 -07:00
Shigeki Ohtsu 9c06db7444 test: change tls tests not to use LOW cipher
DES-CBC-SHA is LOW cipher and disabled by default and it is used in
tests of hornorcipherorder. They are changed as to

- use RC4-SHA instead of DES-CBC-SHA.
- add ECDHE-RSA-AES256-SHA to entries to keep the number of ciphers.
- remove tests for non-default cipher because only SEED and IDEA are
available in !RC4:!HIGH:ALL.

Fixes: https://github.com/nodejs/LTS/issues/85
PR-URL: https://github.com/nodejs/node/pull/5712
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-03-15 17:32:21 +09:00
Michael Dawson 154098a3dc test: bp fix for test-http-get-pipeline-problem.js
backport fix for test-http-get-pipeline-problem.js from master
to 0.12.X.  We've been seeing an intermittent failure
in runs for zLinux with SLES 12.  We confirmed that this fix
resolves the issue so would like it in 0.12.X

The original commit does not apply cleanly as the paths were
changed, but the actual change is identical.  The original commit was:

https://github.com/nodejs/node/commit/3ba4f71fc4a1b3acdcaaa250bc5ba81442257e09

PR-URL: https://github.com/nodejs/node/pull/3013
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
2016-03-14 08:35:19 -07:00
Ben Noordhuis dbfc9d9241 crypto,tls: remove SSLv2 support
Remove support for SSLv2 because of DROWN (CVE-2016-0800).

Use of the `--enable-ssl2` flag is now an error; node will print an
error message and exit.

PR-URL: https://github.com/nodejs/node/pull/5536
Reviewed-By: Rod Vagg <rod@vagg.org>
2016-03-03 16:32:38 -06:00
James M Snell fa26b13df7 deps: update to http-parser 2.3.2
Fixes http-parser regression with IS_HEADER_CHAR check
Add test case for obstext characters (> 0x80) in header

PR-URL: https://github.com/nodejs/node/pull/5241
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
2016-02-24 17:18:30 +11:00
Rich Trott fcc64792ae child_process: guard against race condition
It is possible that the internal handleMessage() might try to send to
a channel that has been closed. The result can be an AssertionError.
Guard against this.

Fixes: https://github.com/nodejs/node/issues/4205
PR-URL: https://github.com/nodejs/node/pull/5153
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-02-11 11:29:14 -08:00
Rich Trott d421e85dc9 lib: fix cluster handle leak
It is possible to cause a resource leak in SharedHandle. This commit
fixes the leak.

Fixes: https://github.com/nodejs/node/issues/2510
PR-URL: https://github.com/nodejs/node/pull/5152
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
2016-02-11 11:29:14 -08:00
Brian White 6c468df9af child_process: fix data loss with readable event
This commit prevents child process stdio streams from being
automatically flushed on child process exit/close if a 'readable'
event handler has been attached at the time of exit.

Without this, child process stdio data can be lost if the process
exits quickly and a `read()` (e.g. from a 'readable' handler)
hasn't had the chance to get called yet.

Fixes: https://github.com/nodejs/node/issues/5034
PR-URL: https://github.com/nodejs/node/pull/5037
Reviewed-By: James M Snell <jasnell@gmail.com>
2016-02-11 11:29:14 -08:00
Julien Gilli 018e4e0b1a domains: fix handling of uncaught exceptions
Fix node exiting due to an exception being thrown rather than emitting
an 'uncaughtException' event on the process object when:
1. no error handler is set on the domain within which an error is thrown
2. an 'uncaughtException' event listener is set on the process

Also fix an issue where the process would not abort in the proper
function call if an error is thrown within a domain with no error
handler and --abort-on-uncaught-exception is used.

Fixes #3607 and #3653.

PR: #3885
PR-URL: https://github.com/nodejs/node/pull/3885
Reviewed-By: James M Snell <jasnell@gmail.com>
2016-02-11 11:29:14 -08:00
Julien Gilli be39f30447 test: add test-domain-exit-dispose-again back
d1ba82af1c "fixed"
test-domain-exit-dispose-again by changing its logic to test that
process.domain was cleared properly in case an error was thrown from
a timer's callback.

However, it became clear when reviewing a recent change that refactors
lib/timers.js that it was not quite the intention of the original test.

Thus, this change adds the original implementation of
test-domain-exit-dispose-again back, with comments that make its
implementation easier to understand.

It also preserves the changes made by
d1ba82af1c, but it moves them to a new
test file named test-timers-reset-process-domain-on-throw.js.

PR: #4278
PR-URL: https://github.com/nodejs/node/pull/4278
Reviewed-By: James M Snell <jasnell@gmail.com>
2016-02-11 11:29:14 -08:00
Julien Gilli da66166b9a test: fix test-domain-exit-dispose-again
test-domain-exit-dispose-again had been written for node v0.10.x, and
was using the fact that callbacks scheduled with `process.nextTick`
wouldn't run if the domain attached to it was disposed.

This is not longer the case, and as a result the test would not catch
any regression: it would always pass.

This change rewrites that test to check that the current domain is
cleared properly when processing the rest of the timers list if a
timer's callback throws an error. This makes the test fail without the
original fix, and pass with the original fix, as expected.

PR: #3991
PR-URL: https://github.com/nodejs/node/pull/3991
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2016-02-11 11:29:14 -08:00
James M Snell 2a2d3e1b03 http: strictly forbid invalid characters from headers
PR-URL: https://github.com/nodejs/node-private/pull/21
2016-02-09 08:41:18 -08:00
James M Snell d86fc39666 deps: update http-parser to version 2.3.1
includes parsing improvements to ensure closer HTTP spec conformance

PR-URL: https://github.com/nodejs/node-private/pull/21
2016-02-09 08:41:18 -08:00
Fedor Indutny dfc6f4a9af http: fix pipeline regression
Always check that socket still has the parser. It may be destroyed
interim, and we may end up with an uncaught exception.

Fix: https://github.com/nodejs/node/issues/3508
PR-URL: https://github.com/nodejs/node-private/pull/5
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
2015-12-03 23:03:08 +11:00
Michael Dawson caa16b41d6 tls: prevent server from using dhe keys < 768
As part of the fix for logjam, node was upgraded to a
level of openssl which rejects connections to servers that
are using keys smaller than 768 bits. It is still possible,
however, to create a server that uses a smaller key size
and and older client may be able to connect to it.

This PR moves us to a secure by default stance on the
server side as well, preventing the creation of a server
using a dhe key size less than 768. This can be overridden
with the command line option which is also added.

It is derived from

https://github.com/nodejs/node/commit/9b35be58100237365c24ab394d3dc6462f9675e6

which was landed in later io.js/node versions but makes
the limit 1024.  This PR uses the smaller limit in order
to meet the recomendations for logjam while matching was
was done on the client side in openssl to minimize the
potential impacton users.

The command line option will only be documented in the
release notes and will not be added to the tls
documentation.  The goal is that people who are
upgrading are aware and can use the option if they
run into issues, but otherwise the option is not
visible/used.

PR-URL: https://github.com/nodejs/node/pull/3890
Fixes: https://github.com/nodejs/LTS/issues/49
Reviewed-By: Myles Borins <mborins@us.ibm.com>
Reviewed-By: James Snell <jasnell@gmail.com>
Reviewed-By: Rod Vagg <r@va.gg>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
2015-11-23 11:30:50 -05:00
Jeremy Whitlock f0453caea2 domains: port caeb677 from v0.10 to v0.12
caeb677
Do not abort the process if an error is thrown from within a domain,
an error handler is setup for the domain and
--abort-on-uncaught-exception was passed on the command line.

However, if an error is thrown from within the top-level domain's
error handler and --abort-on-uncaught-exception was passed on the
command line, make the process abort.

Fixes: #8877

Fixes: https://github.com/nodejs/node-v0.x-archive/issues/8877
PR-URL: https://github.com/nodejs/node-v0.x-archive/pull/25835
Reviewed-By: misterdjules - Julien Gilli <jgilli@nodejs.org>
2015-09-30 19:59:10 -04:00
cjihrig b5a0abcfdf child_process: clone spawn options argument
spawnSync() modifies the options argument. This commit makes
a copy of options before any modifications occur.

PR-URL: https://github.com/joyent/node/pull/9159
Reviewed-By: trevnorris - Trevor Norris <trev.norris@gmail.com>
2015-08-27 16:03:33 -04:00
Devin Nakamura 0363cf4a80 tls: Closing parent socket also closes the tls sock
PR-URL: https://github.com/joyent/node/pull/25642
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
2015-08-27 14:54:21 -04:00
Evan Lucas 261fa3620f src: fix intermittent SIGSEGV in resolveTxt
Fixes a SIGSEGV by making sure `txt_chunk` is not empty before setting
it on `txt_records`

Fixes: https://github.com/joyent/node/issues/9285
PR-URL: https://github.com/joyent/node/pull/9300
Reviewed-By: cjihrig - Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
2015-08-27 14:19:44 -04:00
João Reis 1f7257b02d test: mark test-https-aws-ssl flaky on linux
PR-URL: https://github.com/joyent/node/pull/25893
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
2015-08-25 07:36:39 -04:00
Alexis Campailla cf435d55db test: mark test-signal-unregister as flaky
This test just failed on Ubuntu in Jenkins, for a change that
is 100% Windows-specific.

Reviewed-By: Joao Reis <reis@janeasystems.com>
PR-URL: https://github.com/joyent/node/pull/25750
2015-07-24 02:04:43 -07:00
João Reis ceb6a8c131 test: fix test-debug-port-from-cmdline
This change is a backport of 2b4b600660
from io.js.

Original commit message:

  This test was failing because the spawned process was terminated
  before anything could be done, by calling child.stdin.end. With this
  change, the child's stdin is no longer closed. When the stdin is not
  a tty, io.js waits for the whole input before starting, so the child
  must be run with --interactive to process the command sent by the
  parent. The child is killed explicitly by the parent before it exits.

  This test was failing silently because the asserts were not called if
  nothing was received from the child. This fix moves assertOutputLines
  to always run on exit.

  Fixes: https://github.com/nodejs/io.js/issues/2177
  Refs: https://github.com/nodejs/io.js/issues/2094
  PR-URL: https://github.com/nodejs/io.js/pull/2186
  Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  Reviewed-By: Rod Vagg <rod@vagg.org>
  Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
  Reviewed-By: Alexis Campailla <alexis@janeasystems.com>

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25748
2015-07-23 08:18:33 -07:00
Fedor Indutny b8d47a7b6f fix
Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/25739
2015-07-20 11:47:07 -07:00
Fedor Indutny 22997731e6 test: add regression test for #25735
See: https://github.com/joyent/node/issues/25736

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/25739
2015-07-20 11:47:06 -07:00
Fedor Indutny 75697112e8 tls: do not hang without newSession handler
When listening for client hello parser events (like OCSP requests), do
not hang if `newSession` event handler is not present.

Fix: https://github.com/joyent/node/issues/8660
Fix: https://github.com/joyent/node/issues/25735

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/25739
2015-07-20 11:47:06 -07:00
Julien Gilli 39e05639f4 test: mark http-pipeline-flood flaky on win32
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
PR-URL: https://github.com/joyent/node/pull/25707
2015-07-17 11:46:04 -07:00
João Reis 78d256e7f5 test: unmark tests that are no longer flaky
- `test-crypto-domains` was fixed by
joyent/node@2afa3d8a03

- All tests under linux appear to be fixed and have not failed recently
on Jenkins

- `test-http-dns-fail` was fixed by the DNS configuration change
mentioned in joyent/node#8056

Fixes #25656
Fixes #25673

Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
PR-URL: https://github.com/joyent/node/pull/25676
2015-07-16 02:10:08 -07:00
João Reis 8294f32cff test: mark microtask-queue-run(-domain) as flaky
test-microtask-queue-run and test-microtask-queue-run-domain fail very
rarely at least on linux x64, windows 2012r2 x64 and smartos x86

Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
PR-URL: https://github.com/joyent/node/pull/25606
2015-07-02 11:01:46 -07:00
Julien Gilli f50c37d993 Merge remote-tracking branch 'upstream/v0.10' into v0.12
Conflicts:
	AUTHORS
	ChangeLog
	lib/timers.js
	src/node_version.h
	test/common.js
2015-06-22 11:11:51 -07:00
Julien Gilli dcb7ef2e40 tls: revert disable RC4 and cipher lists changes
This reverts commit 67d9a56251.

This commit actually reverts both
67d9a56251 and
02a549ed2b (both related to ciphers list
changes). It does it in one commit because reverting
02a549ed2b results in an empty commit.

These changes are not yet ready to be released, and before they are we
want to be able to publish new releases. We're reverting them so that we
can submit a new PR that will contain all these changes plus what's
necessary to be able to land them properly.

Conflicts:
	src/node.cc

PR: #25511
PR-URL: https://github.com/joyent/node/pull/25511
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
2015-06-18 22:37:10 -07:00
Shigeki Ohtsu 139dbe8bb7 test: remove 512 bits test in test-tls-dhe.js
Test of 512 bits key is failed after upgrading openssl-1.0.1o due to
its limit of 768 bits key size. Remove it and start from 1024 bits
test.

Reviewed-By: Michael Dawson <mdawson@devrus.com>
PR-URL: https://github.com/joyent/node/pull/25533
2015-06-17 15:20:53 -07:00
Julien Gilli d38e865fce timers: fix timeout when added in timer's callback
When a timer is added in another timer's callback, its underlying timer
handle will be started with a timeout that is actually incorrect.

The reason is that  the value that represents the current time is not
updated between the time the original callback is called and the time
the added timer is processed by timers.listOnTimeout. That leads the
logic in timers.listOnTimeout to do an incorrect computation that makes
the added timer fire with a timeout of scheduledTimeout +
timeSpentInCallback.

This change fixes that and make timers scheduled within other timers'
callbacks fire as expected.

Fixes #9333 and #15447.

PR: #17203
PR-URL: https://github.com/joyent/node/pull/17203
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2015-06-17 11:36:38 -07:00
Dmitri Melikyan b81a643f9a V8: avoid deadlock when profiling is active
A deadlock happens when sampler initiated by SIGPROF tries to lock
the thread and the thread is already locked by the same thread. As
a result, other thread involved in sampling process hangs. The
patch adds a check for thread lock before continuing sampler
operation.

The fix has been tested on a sample app under load with and without
profiling turned on.

Fixes issue #14576 and specifically the duplicate issue #25295

Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
PR-URL: https://github.com/joyent/node/pull/25309
2015-06-10 10:32:03 -07:00
Shigeki Ohtsu 10349829f2 test: add -no_rand_screen for tls-server-verify
This improves the performance of openssl s_client on Windows and
gains several seconds to finish test-tls-server-verify.

(cherry picked from commit 2ff517e0e410ea33ba5a3d289a82fc315d120e8e)

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:05 -07:00
Shigeki Ohtsu cb63d93e03 test: kill child in tls-server-verify for speed up
For better performance of the test, the parent kills child processes
so as not to wait them to be ended.

(cherry picked from commit 833b23636045f7afc929196139021630a390391a)

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:04 -07:00
Alexis Campailla 83b7c07421 test,win: re-enable tls-server-verify in CI
Now that the test is fixed, node-accept-pull-request should
fail when the test fails.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:04 -07:00
João Reis 29bbb32171 test: improve console output of tls-server-verify
When running in parallel, it is not easy to identify what server and
client failed when the test fails. This adds identifiers to all lines
of console output.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:03 -07:00
João Reis 6d3450511b test: run tls-server-verify servers in parallel
Different servers must use different ports. Since we can count only on
common.PORT and common.PORT+1, run only 2 servers in parallel.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:03 -07:00
João Reis 1191e651e4 test: running tls-server-verify clients in parallel
OpenSSL s_client introduces some delay on Windows. With all clients
running sequentially, this delay is big enough to break CI. This fix runs
the clients in parallel (unless the test includes renegotiation),
reducing the total run time.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25368
2015-06-04 05:24:03 -07:00
cjihrig e23450fa81 test: Array.prototype.values() regression test
This commit adds a regression test for
https://github.com/joyent/node/issues/25324

Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
PR-URL: https://github.com/joyent/node/pull/25328
2015-05-22 11:52:07 -07:00
Gireesh Punathil ebbb3560fa test: relax timing constraints for child process
With additional load in the system, the child process which runs sleep
command takes more time to run - typically slightly above 1 second,
but above 2 seconds under stress.

While the intent of the test is to test the functionality of spawnSync
and the child process in general, in effect it is testing the system
command sleep, and further, it's responsiveness.

Since from the name the purpose of the test seems to be unrelated to
the sleep behaviour, I believe a more meaningful assertion would be to
see the time taken is more than 1 second.

Reviewed-By: Michael Dawson <mhdawsonibm@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25291
2015-05-14 16:46:10 -07:00
Michael Dawson 97d4706e81 test: delete simple/test-process-active-wraps
This test currently fails when run on machines without
IPv6 enabled. Futher it was delete in io.js under
3143d732f6 as the test
was known to have problems across platforms and
releases.

The existing test was hard to understand so I wrote
a new version but then found exactly what was
reported in the io.js pull request.  Behaviour varies
across platforms such that writing a solid test would
either be infeasible or test so little that
it does not seem to make sense to keep it.

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25326
2015-05-14 15:28:32 -07:00
Julien Gilli 72188d87d0 tls,crypto: revert recent cipher lists changes
Revert "disable RC4, add --cipher-list command line switch" and
"tls: make --enable-legacy-cipher-list=val less verbose"

This reverts commit f9291a9449 and
b5737bb977.

There is still some work to be done to guarantee secure defaults and a
smooth upgrade path for v0.12.x users. Before this work is finished, we
want to be able to release new versions of v0.12.x. So instead of
waiting for these changes to be ready to ship, revert them and integrate
them when they're ready to be shipped.

Conflicts:
	src/node.cc

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25296
2015-05-13 15:37:32 -07:00
Julien Gilli 101e103e3b repl: make 'Unexpected token' errors recoverable
Fix the regexp used to detect 'Unexpected token' errors so that they can
be considered as recoverable. This fixes the following use case:

> var foo = 'bar \
... baz';
undefined
> foo
'bar baz'
>

Fixes #8874

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: https://github.com/joyent/node/pull/8875
2015-05-12 17:38:06 -07:00