38b2c95 | Larry Hastings | 08 February 2015, 00:04:55 UTC | Added tag v3.4.3rc1 for changeset 69dd528ca625 | 08 February 2015, 00:04:55 UTC |
b250610 | Larry Hastings | 08 February 2015, 00:04:22 UTC | Fix a copyright notice that still said 2014. | 08 February 2015, 00:04:22 UTC |
e552906 | Larry Hastings | 08 February 2015, 00:00:45 UTC | Version bump for 3.4.3rc1. | 08 February 2015, 00:00:45 UTC |
af83f9e | Larry Hastings | 07 February 2015, 23:55:23 UTC | Updated pydoc topics data for 3.4.3rc1 release. | 07 February 2015, 23:55:23 UTC |
3595276 | Vinay Sajip | 07 February 2015, 10:56:06 UTC | Corrected typo. | 07 February 2015, 10:56:06 UTC |
c7e34fb | Vinay Sajip | 07 February 2015, 10:52:02 UTC | Minor change to documentation on creating venvs. | 07 February 2015, 10:52:02 UTC |
e43c035 | Barry Warsaw | 06 February 2015, 17:00:04 UTC | Issue #23399: pyvenv creates relative symlinks where possible. | 06 February 2015, 17:00:04 UTC |
b4e20bb | Steve Dower | 06 February 2015, 16:50:23 UTC | Fix definition mismatch for type_is_subtype_base_chain. | 06 February 2015, 16:50:23 UTC |
581c29f | Barry Warsaw | 06 February 2015, 16:23:58 UTC | Issue #23399: pyvenv creates relative symlinks where possible. | 06 February 2015, 16:23:58 UTC |
b518134 | Serhiy Storchaka | 06 February 2015, 06:58:56 UTC | Issue #23392: Added tests for marshal C API that works with FILE*. | 06 February 2015, 06:58:56 UTC |
17d337b | Serhiy Storchaka | 06 February 2015, 06:35:20 UTC | Issue #23881: Only use entry-values with gdb 7.4 in tests. Fixes a regression in issue #22765. Patch by Vinson Lee. | 06 February 2015, 06:35:20 UTC |
50afcc0 | Ned Deily | 06 February 2015, 04:42:06 UTC | Fix missing :ref: for idle in doc build. | 06 February 2015, 04:42:06 UTC |
104b9e0 | Benjamin Peterson | 06 February 2015, 03:29:14 UTC | fix many custom mro() edge cases and improve code quality (#22735) Patch by Eldar Abusalimov. | 06 February 2015, 03:29:14 UTC |
9125fe2 | Ned Deily | 06 February 2015, 03:13:30 UTC | Issue #23212: Update OS X installer build OpenSSL to 1.0.1l. (currently only used for builds with <= 10.5 deployment targets) | 06 February 2015, 03:13:30 UTC |
aad7b2e | Victor Stinner | 05 February 2015, 13:25:05 UTC | test_multiprocessing: tolerate a delta of 30 ms because of bad clock resolution on Windows | 05 February 2015, 13:25:05 UTC |
aef859c | Serhiy Storchaka | 05 February 2015, 13:14:35 UTC | Issue #18982: Add tests for CLI of the calendar module. | 05 February 2015, 13:14:35 UTC |
a87501f | Victor Stinner | 05 February 2015, 10:45:33 UTC | asyncio: BaseEventLoop: rename _owner to _thread_id | 05 February 2015, 10:45:33 UTC |
05784a7 | Ned Deily | 05 February 2015, 06:20:13 UTC | Issue #23345: Prevent test_ssl failures with large OpenSSL patch level values (like 0.9.8zc). | 05 February 2015, 06:20:13 UTC |
ff0fdef | Donald Stufft | 05 February 2015, 03:00:17 UTC | Update pip to 6.0.8 | 05 February 2015, 03:00:17 UTC |
c3493aa | Gregory P. Smith | 05 February 2015, 01:10:19 UTC | Make the stdlib test suite helper test.script_helper._assert_python no longer pass -I or -E to the child process by default when the environment is required for the child process interpreter to function properly. | 05 February 2015, 01:10:19 UTC |
6a1b004 | Victor Stinner | 04 February 2015, 15:14:33 UTC | asyncio doc: explain how to display ResourceWarning in the debug mode section | 04 February 2015, 15:14:33 UTC |
2fc2313 | Victor Stinner | 04 February 2015, 13:51:23 UTC | asyncio: Only call _check_resolved_address() in debug mode * _check_resolved_address() is implemented with getaddrinfo() which is slow * If available, use socket.inet_pton() instead of socket.getaddrinfo(), because it is much faster Microbenchmark (timeit) on Fedora 21 (Python 3.4, Linux 3.17, glibc 2.20) to validate the IPV4 address "127.0.0.1" or the IPv6 address "::1": * getaddrinfo() 10.4 usec per loop * inet_pton(): 0.285 usec per loop On glibc older than 2.14, getaddrinfo() always requests the list of all local IP addresses to the kernel (using a NETLINK socket). getaddrinfo() has other known issues, it's better to avoid it when it is possible. | 04 February 2015, 13:51:23 UTC |
aa41b9b | Victor Stinner | 04 February 2015, 13:50:59 UTC | asyncio: BaseSelectorEventLoop uses directly the private _debug attribute Just try to be consistent: _debug was already used in some places, and always used in BaseProactorEventLoop. | 04 February 2015, 13:50:59 UTC |
2f90aa6 | Gregory P. Smith | 04 February 2015, 10:11:56 UTC | Fixes issue23390: make profile-opt causes -fprofile-generate and related flags to end up in distutils CFLAGS. | 04 February 2015, 10:11:56 UTC |
b9a3dd9 | Gregory P. Smith | 04 February 2015, 08:59:40 UTC | Skip some tests that require a subinterpreter launched with -E or -I when the interpreter under test is being run in an environment that requires the use of environment variables such as PYTHONHOME in order to function at all. Adds a private test.script_helper._interpreter_requires_environment() function to be used with @unittest.skipIf on stdlib test methods requiring this. | 04 February 2015, 08:59:40 UTC |
17d87f8 | Victor Stinner | 03 February 2015, 14:09:24 UTC | asyncio, Tulip issue 221: Fix doc of QueueEmpty and QueueFull | 03 February 2015, 14:09:24 UTC |
3265344 | Berker Peksag | 03 February 2015, 09:55:09 UTC | Issue #23358: Add missing BaseServer entry to socketserver.__all__. Patch by Martin Panter. | 03 February 2015, 09:55:09 UTC |
c057c38 | Serhiy Storchaka | 03 February 2015, 00:00:18 UTC | Issue #23099: Closing io.BytesIO with exported buffer is rejected now to prevent corrupting exported buffer. | 03 February 2015, 00:00:18 UTC |
b5e8e57 | Serhiy Storchaka | 02 February 2015, 23:35:10 UTC | Issues #23363, #23364, #23365, #23366: Fixed itertools overflow tests. Used PyMem_New to check overflow. | 02 February 2015, 23:35:10 UTC |
dee948b | Serhiy Storchaka | 02 February 2015, 23:34:09 UTC | Issues #23363, #23364, #23365, #23366: Fixed itertools overflow tests. Used PyMem_New to check overflow. | 02 February 2015, 23:34:09 UTC |
4fdb684 | Serhiy Storchaka | 02 February 2015, 23:21:08 UTC | Issue #22896: Avoid to use PyObject_AsCharBuffer(), PyObject_AsReadBuffer() and PyObject_AsWriteBuffer(). | 02 February 2015, 23:21:08 UTC |
b0ef785 | Benjamin Peterson | 02 February 2015, 22:47:26 UTC | merge 3.3 | 02 February 2015, 22:47:26 UTC |
1572944 | Benjamin Peterson | 02 February 2015, 22:47:07 UTC | reduce memory usage of test (closes #23369) | 02 February 2015, 22:47:07 UTC |
f5f9c13 | Benjamin Peterson | 02 February 2015, 19:22:13 UTC | adjust for py3k module renaming | 02 February 2015, 19:22:13 UTC |
3356a2e | Benjamin Peterson | 02 February 2015, 19:06:11 UTC | _clear_type_cache is cpython-only | 02 February 2015, 19:06:11 UTC |
5d44c08 | Victor Stinner | 02 February 2015, 17:36:31 UTC | Issue #23353, asyncio: Workaround CPython bug #23353 Don't use yield/yield-from in an except block of a generator. Store the exception and handle it outside the except block. | 02 February 2015, 17:36:31 UTC |
7a66fc2 | Benjamin Peterson | 02 February 2015, 15:51:20 UTC | revert lineno and col_offset changes from #16795 (closes #21295) | 02 February 2015, 15:51:20 UTC |
c468b53 | Benjamin Peterson | 02 February 2015, 02:35:34 UTC | merge 3.3 (#23364, #23363) | 02 February 2015, 02:35:34 UTC |
0eaabf1 | Benjamin Peterson | 02 February 2015, 02:34:07 UTC | check for overflows in permutations() and product() (closes #23363, closes #23364) | 02 February 2015, 02:34:07 UTC |
f635dc3 | Benjamin Peterson | 02 February 2015, 02:11:39 UTC | merge 3.3 (#23365) | 02 February 2015, 02:11:39 UTC |
6f08229 | Benjamin Peterson | 02 February 2015, 02:10:47 UTC | check for overflow in combinations_with_replacement (closes #23365) | 02 February 2015, 02:10:47 UTC |
819c4e9 | Benjamin Peterson | 02 February 2015, 02:00:15 UTC | merge 3.3 (#23366) | 02 February 2015, 02:00:15 UTC |
4b40eeb | Benjamin Peterson | 02 February 2015, 01:59:00 UTC | detect overflow in combinations (closes #23366) | 02 February 2015, 01:59:00 UTC |
d40f136 | Benjamin Peterson | 02 February 2015, 01:17:22 UTC | https goodness | 02 February 2015, 01:17:22 UTC |
337578b | Benjamin Peterson | 02 February 2015, 01:16:59 UTC | fix tests on systems that can't validate python.org | 02 February 2015, 01:16:59 UTC |
c0b743a | Benjamin Peterson | 01 February 2015, 23:02:15 UTC | merge 3.3 | 01 February 2015, 23:02:15 UTC |
68389ea | Benjamin Peterson | 01 February 2015, 23:02:09 UTC | remove extra ws | 01 February 2015, 23:02:09 UTC |
3675cd9 | Benjamin Peterson | 01 February 2015, 22:59:49 UTC | merge 3.3 (#23369) | 01 February 2015, 22:59:49 UTC |
e3bfe19 | Benjamin Peterson | 01 February 2015, 22:53:53 UTC | fix possible overflow in encode_basestring_ascii (closes #23369) | 01 February 2015, 22:53:53 UTC |
3a43d06 | Stefan Krah | 01 February 2015, 18:46:31 UTC | Whitespace. | 01 February 2015, 18:46:31 UTC |
0dc4e15 | Stefan Krah | 01 February 2015, 18:42:12 UTC | Issue #23352: Document that Py_buffer.suboffsets must be NULL if no suboffsets are required. | 01 February 2015, 18:42:12 UTC |
7213fcc | Stefan Krah | 01 February 2015, 15:19:23 UTC | Issue #23370: Fix off-by-one error for non-contiguous buffers. | 01 February 2015, 15:19:23 UTC |
f046dfe | Vinay Sajip | 01 February 2015, 15:17:34 UTC | Added a cookbook entry on logging audible messages. | 01 February 2015, 15:17:34 UTC |
6b89973 | Steve Dower | 31 January 2015, 20:19:10 UTC | Issue #23212: Update Windows copy of OpenSSL to 1.0.1l | 31 January 2015, 20:19:10 UTC |
26f7b8a | Victor Stinner | 31 January 2015, 09:29:47 UTC | Issue #23353: Fix the exception handling of generators in PyEval_EvalFrameEx(). At entry, save or swap the exception state even if PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state is now always restored or swapped, not only if why is WHY_YIELD or WHY_RETURN. Patch co-written with Antoine Pitrou. | 31 January 2015, 09:29:47 UTC |
fdc9953 | Serhiy Storchaka | 31 January 2015, 09:48:52 UTC | Issue #22765: Fixed test_gdb failures. Supressed unexpected gdb output. Patch by Bohuslav Kabrda. | 31 January 2015, 09:48:52 UTC |
756f0b1 | R David Murray | 30 January 2015, 00:53:33 UTC | Fix asyncio doc typo. | 30 January 2015, 00:53:33 UTC |
188f2c0 | Victor Stinner | 30 January 2015, 00:35:14 UTC | asyncio doc: document the new ResourceWarning warnings | 30 January 2015, 00:35:14 UTC |
f2e43cb | Victor Stinner | 30 January 2015, 00:20:44 UTC | Issue #23347, asyncio: send_signal(), terminate(), kill() don't check if the transport was closed. The check broken a Tulip example and this limitation is arbitrary. Check if _proc is None should be enough. Enhance also close(): do nothing when called the second time. | 30 January 2015, 00:20:44 UTC |
1077dee | Victor Stinner | 29 January 2015, 23:55:58 UTC | asyncio doc: add a section about task cancellation | 29 January 2015, 23:55:58 UTC |
7a55b88 | Victor Stinner | 29 January 2015, 23:37:04 UTC | Issue #21962, asyncio doc: Suggest the usage of wait_for() to replace the lack of timeout parameter for locks and queues. | 29 January 2015, 23:37:04 UTC |
1241ecc | Victor Stinner | 29 January 2015, 23:16:14 UTC | Issue #23347, asyncio: Make BaseSubprocessTransport.wait() private | 29 January 2015, 23:16:14 UTC |
0698638 | Victor Stinner | 29 January 2015, 23:11:42 UTC | asyncio: Fix ResourceWarning in test_subprocess.test_proc_exit() | 29 January 2015, 23:11:42 UTC |
47cd10d | Victor Stinner | 29 January 2015, 23:05:19 UTC | asyncio: sync with Tulip Issue #23347: send_signal(), kill() and terminate() methods of BaseSubprocessTransport now check if the transport was closed and if the process exited. Issue #23347: Refactor creation of subprocess transports. Changes on BaseSubprocessTransport: * Add a wait() method to wait until the child process exit * The constructor now accepts an optional waiter parameter. The _post_init() coroutine must not be called explicitly anymore. It makes subprocess transports closer to other transports, and it gives more freedom if we want later to change completly how subprocess transports are created. * close() now kills the process instead of kindly terminate it: the child process may ignore SIGTERM and continue to run. Call explicitly terminate() and wait() if you want to kindly terminate the child process. * close() now logs a warning in debug mode if the process is still running and needs to be killed * _make_subprocess_transport() is now fully asynchronous again: if the creation of the transport failed, wait asynchronously for the process eixt. Before the wait was synchronous. This change requires close() to *kill*, and not terminate, the child process. * Remove the _kill_wait() method, replaced with a more agressive close() method. It fixes _make_subprocess_transport() on error. BaseSubprocessTransport.close() calls the close() method of pipe transports, whereas _kill_wait() closed directly pipes of the subprocess.Popen object without unregistering file descriptors from the selector (which caused severe bugs). These changes simplifies the code of subprocess.py. | 29 January 2015, 23:05:19 UTC |
978a9af | Victor Stinner | 29 January 2015, 16:50:58 UTC | Issue #23243, asyncio: Emit a ResourceWarning when an event loop or a transport is not explicitly closed. Close also explicitly transports in test_sslproto. | 29 January 2015, 16:50:58 UTC |
3c0cf05 | Stefan Krah | 29 January 2015, 16:33:31 UTC | Issue #22668: Remove endianness assumption in test. | 29 January 2015, 16:33:31 UTC |
fa5d6a5 | Stefan Krah | 29 January 2015, 13:27:23 UTC | Issue #22668: Ensure that format strings survive slicing after casting. | 29 January 2015, 13:27:23 UTC |
2934262 | Victor Stinner | 29 January 2015, 13:15:19 UTC | asyncio: sync with Tulip * Cleanup gather(): use cancelled() method instead of using private Future attribute * Fix _UnixReadPipeTransport and _UnixWritePipeTransport. Only start reading when connection_made() has been called. * Issue #23333: Fix BaseSelectorEventLoop._accept_connection(). Close the transport on error. In debug mode, log errors using call_exception_handler() | 29 January 2015, 13:15:19 UTC |
54a231d | Victor Stinner | 29 January 2015, 12:33:15 UTC | asyncio doc: document Protocol state machine | 29 January 2015, 12:33:15 UTC |
47bbea7 | Victor Stinner | 29 January 2015, 01:56:05 UTC | asyncio: sync with Tulip * _SelectorTransport constructor: extra parameter is now optional * Fix _SelectorDatagramTransport constructor. Only start reading after connection_made() has been called. * Fix _SelectorSslTransport.close(). Don't call protocol.connection_lost() if protocol.connection_made() was not called yet: if the SSL handshake failed or is still in progress. The close() method can be called if the creation of the connection is cancelled, by a timeout for example. | 29 January 2015, 01:56:05 UTC |
7b5a900 | Victor Stinner | 29 January 2015, 01:14:30 UTC | asyncio: BaseSubprocessTransport._kill_wait() now also call close() close() closes pipes, which is not None yet by _kill_wait(). | 29 January 2015, 01:14:30 UTC |
702dada | Gregory P. Smith | 29 January 2015, 00:07:52 UTC | Always #define _PyLong_FromDev as we always need it to compile rather than only defining it when HAVE_MKNOD && HAVE_MAKEDEV are true. This "oops" issue reported by John E. Malmberg on core-mentorship. (what kinds of systems don't HAVE_MKNOD && HAVE_MAKEDEV?) | 29 January 2015, 00:07:52 UTC |
fa73779 | Victor Stinner | 28 January 2015, 23:36:51 UTC | asyncio: Fix _SelectorSocketTransport constructor Only start reading when connection_made() has been called: protocol.data_received() must not be called before protocol.connection_made(). | 28 January 2015, 23:36:51 UTC |
f07801b | Victor Stinner | 28 January 2015, 23:36:35 UTC | asyncio: SSL transports now clear their reference to the waiter * Rephrase also the comment explaining why the waiter is not awaken immediatly. * SSLProtocol.eof_received() doesn't instanciate ConnectionResetError exception directly, it will be done by Future.set_exception(). The exception is not used if the waiter was cancelled or if there is no waiter. | 28 January 2015, 23:36:35 UTC |
b507cba | Victor Stinner | 28 January 2015, 23:35:56 UTC | asyncio: Fix SSLProtocol.eof_received() Wake-up the waiter if it is not done yet. | 28 January 2015, 23:35:56 UTC |
a89f5f0 | Donald Stufft | 28 January 2015, 22:56:15 UTC | Update setuptools to 12.0.5 and pip to 6.0.7 | 28 January 2015, 22:56:15 UTC |
000daae | Serhiy Storchaka | 28 January 2015, 15:10:48 UTC | Fixed memory leak in marshal. | 28 January 2015, 15:10:48 UTC |
e09bcc8 | Serhiy Storchaka | 28 January 2015, 09:03:33 UTC | Issue #22079: PyType_Ready() now checks that statically allocated type has no dynamically allocated bases. | 28 January 2015, 09:03:33 UTC |
db07164 | Vinay Sajip | 28 January 2015, 07:32:38 UTC | Added a logging cookbook entry on customized exception formatting. | 28 January 2015, 07:32:38 UTC |
ff018e4 | Victor Stinner | 27 January 2015, 23:30:40 UTC | asyncio: sync with Tulip * Remove unused SSLProtocol._closing attribute * test_sslproto: skip test if ssl module is missing * Python issue #23208: Don't use the traceback of the current handle if we already know the traceback of the source. The handle may be more revelant, but having 3 tracebacks (handle, source, exception) becomes more difficult to read. The handle may be preferred later but it requires more work to make this choice. | 27 January 2015, 23:30:40 UTC |
4dbc305 | Serhiy Storchaka | 27 January 2015, 20:18:46 UTC | Issue #23055: Fixed a buffer overflow in PyUnicode_FromFormatV. Analysis and fix by Guido Vranken. | 27 January 2015, 20:18:46 UTC |
b68c420 | Berker Peksag | 27 January 2015, 00:52:14 UTC | Issue #23286: Fix typo in the tutorial. Patch by Mayank Tripathi. | 27 January 2015, 00:52:14 UTC |
498b1f6 | Victor Stinner | 26 January 2015, 21:43:39 UTC | asyncio, _overlapped.ConnectPipe(): release the GIL | 26 January 2015, 21:43:39 UTC |
41063d2 | Victor Stinner | 26 January 2015, 21:30:49 UTC | asyncio, Tulip issue 204: Fix IocpProactor.recv() If ReadFile() fails with ERROR_BROKEN_PIPE, the operation is not pending: don't register the overlapped. I don't know if WSARecv() can fail with ERROR_BROKEN_PIPE. Since Overlapped.WSARecv() already handled ERROR_BROKEN_PIPE, let me guess that it has the same behaviour than ReadFile(). | 26 January 2015, 21:30:49 UTC |
24dfa3c | Victor Stinner | 26 January 2015, 21:30:28 UTC | Issue #23095, asyncio: Fix _WaitHandleFuture.cancel() If UnregisterWaitEx() fais with ERROR_IO_PENDING, it doesn't mean that the wait is unregistered yet. We still have to wait until the wait is cancelled. | 26 January 2015, 21:30:28 UTC |
e0fd157 | Victor Stinner | 26 January 2015, 14:04:03 UTC | Issue #23293, asyncio: Rewrite IocpProactor.connect_pipe() as a coroutine Use a coroutine with asyncio.sleep() instead of call_later() to ensure that the schedule call is cancelled. Add also a unit test cancelling connect_pipe(). | 26 January 2015, 14:04:03 UTC |
2a3f38f | Victor Stinner | 26 January 2015, 14:03:44 UTC | asyncio: PipeHandle.fileno() now raises an exception if the pipe is closed | 26 January 2015, 14:03:44 UTC |
a19b7b3 | Victor Stinner | 26 January 2015, 14:03:20 UTC | asyncio: Fix ProactorEventLoop.start_serving_pipe() If a client connected before the server was closed: drop the client (close the pipe) and exit. | 26 January 2015, 14:03:20 UTC |
b76bcc4 | Serhiy Storchaka | 26 January 2015, 11:45:39 UTC | Issue #14099: Backout changeset e5bb3044402b (except adapted tests). | 26 January 2015, 11:45:39 UTC |
b6c0c5b | Serhiy Storchaka | 26 January 2015, 10:12:31 UTC | Merge heads | 26 January 2015, 10:12:31 UTC |
2bef585 | Serhiy Storchaka | 26 January 2015, 10:09:17 UTC | Issue #18518: timeit now rejects statements which can't be compiled outside a function or a loop (e.g. "return" or "break"). | 26 January 2015, 10:09:17 UTC |
9b524d5 | Victor Stinner | 26 January 2015, 10:05:12 UTC | Issue #23208, asyncio: Add BaseEventLoop._current_handle In debug mode, BaseEventLoop._run_once() now sets the BaseEventLoop._current_handle attribute to the handle currently executed. In release mode or when no handle is executed, the attribute is None. BaseEventLoop.default_exception_handler() displays the traceback of the current handle if available. | 26 January 2015, 10:05:12 UTC |
3d2256f | Victor Stinner | 26 January 2015, 10:02:59 UTC | Issue #23293, asyncio: Cleanup IocpProactor.close() The special case for connect_pipe() is not more needed. connect_pipe() doesn't use overlapped operations anymore. | 26 January 2015, 10:02:59 UTC |
2596dd0 | Victor Stinner | 26 January 2015, 10:02:18 UTC | asyncio: Close transports on error Fix create_datagram_endpoint(), connect_read_pipe() and connect_write_pipe(): close the transport if the task is cancelled or on error. | 26 January 2015, 10:02:18 UTC |
21d7533 | Serhiy Storchaka | 26 January 2015, 08:37:01 UTC | Issue #23094: Fixed readline with frames in Python implementation of pickle. | 26 January 2015, 08:37:01 UTC |
5106d04 | Serhiy Storchaka | 26 January 2015, 08:26:14 UTC | Issue #7665: Fixed tests test_ntpath and test_urllib2 when ran in the directory containing a backslash. | 26 January 2015, 08:26:14 UTC |
624caf7 | Serhiy Storchaka | 26 January 2015, 08:14:29 UTC | Add credits for Martin Panter. | 26 January 2015, 08:14:29 UTC |
f186e12 | Serhiy Storchaka | 26 January 2015, 08:11:16 UTC | Issue #23268: Fixed bugs in the comparison of ipaddress classes. | 26 January 2015, 08:11:16 UTC |
f4b7a02 | Serhiy Storchaka | 26 January 2015, 07:57:07 UTC | Issue #21408: The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Removed incorrect implementations of __ne__(). | 26 January 2015, 07:57:07 UTC |
155ceaa | Benjamin Peterson | 26 January 2015, 04:30:30 UTC | handle headers with no key (closes #19996) Patch by Cory Benfield. | 26 January 2015, 04:30:30 UTC |