]> granicus.if.org Git - pdns/log
pdns
5 years agodnsdist: Display backend and frontend TCP metrics in showTCPStats()
Remi Gacogne [Tue, 26 Mar 2019 10:10:57 +0000 (11:10 +0100)]
dnsdist: Display backend and frontend TCP metrics in showTCPStats()

5 years agodnsdist: Add more TCP metrics
Remi Gacogne [Tue, 26 Mar 2019 09:24:35 +0000 (10:24 +0100)]
dnsdist: Add more TCP metrics

5 years agodnsdist: Add a "lots of TCP connections" regression test
Remi Gacogne [Mon, 25 Mar 2019 16:57:31 +0000 (17:57 +0100)]
dnsdist: Add a "lots of TCP connections" regression test

5 years agodnsdist: Downstream failures only count for fresh TCP connections
Remi Gacogne [Mon, 25 Mar 2019 16:11:22 +0000 (17:11 +0100)]
dnsdist: Downstream failures only count for fresh TCP connections

5 years agodnsdist: Properly handle an I/O error while sending a TCP response
Remi Gacogne [Mon, 25 Mar 2019 16:10:13 +0000 (17:10 +0100)]
dnsdist: Properly handle an I/O error while sending a TCP response

5 years agomplexer: Add some unit tests for our multiplexers
Remi Gacogne [Fri, 22 Mar 2019 17:25:44 +0000 (18:25 +0100)]
mplexer: Add some unit tests for our multiplexers

5 years agomplexer: Keep TTD ordered so we can scan for timeouts efficiently
Remi Gacogne [Fri, 22 Mar 2019 14:03:14 +0000 (15:03 +0100)]
mplexer: Keep TTD ordered so we can scan for timeouts efficiently

5 years agodnsdist: Handle EAGAIN when reading from the non-blocking TCP pipe
Remi Gacogne [Thu, 21 Mar 2019 17:49:27 +0000 (18:49 +0100)]
dnsdist: Handle EAGAIN when reading from the non-blocking TCP pipe

5 years agodnsdist: Don't scan for TCP timeouts more than once every second
Remi Gacogne [Thu, 21 Mar 2019 17:45:40 +0000 (18:45 +0100)]
dnsdist: Don't scan for TCP timeouts more than once every second

5 years agodnsdist: Make sure that the TCP distribution pipes are non-blocking
Remi Gacogne [Thu, 21 Mar 2019 17:36:33 +0000 (18:36 +0100)]
dnsdist: Make sure that the TCP distribution pipes are non-blocking

5 years agodnsdist: Fix outstanding count for TCP connections
Remi Gacogne [Thu, 21 Mar 2019 17:30:42 +0000 (18:30 +0100)]
dnsdist: Fix outstanding count for TCP connections

5 years agodnsdist: Use a unique pointer for the global TCPClientCollection
Remi Gacogne [Wed, 20 Mar 2019 11:09:28 +0000 (12:09 +0100)]
dnsdist: Use a unique pointer for the global TCPClientCollection

5 years agodnsdist: Remove code duplication between UDP and TCP in the tests
Remi Gacogne [Tue, 19 Mar 2019 14:53:38 +0000 (15:53 +0100)]
dnsdist: Remove code duplication between UDP and TCP in the tests

5 years agodnsdist: Disable regression tests for invalid AXFR
Remi Gacogne [Fri, 8 Mar 2019 17:44:36 +0000 (18:44 +0100)]
dnsdist: Disable regression tests for invalid AXFR

The new implementation does not try to be too smart about that
anymore.

5 years agodnsdist: TCP refactoring using an event-based logic
Remi Gacogne [Thu, 28 Feb 2019 14:39:40 +0000 (15:39 +0100)]
dnsdist: TCP refactoring using an event-based logic

5 years agoOnly allocate the SSocket buffer when we actually need it, cleanup
Remi Gacogne [Tue, 5 Mar 2019 10:48:02 +0000 (11:48 +0100)]
Only allocate the SSocket buffer when we actually need it, cleanup

5 years agoReturn EINPROGRESS instead of -1 in SConnectWithTimeout wo/ timeout
Remi Gacogne [Tue, 5 Mar 2019 10:49:24 +0000 (11:49 +0100)]
Return EINPROGRESS instead of -1 in SConnectWithTimeout wo/ timeout

5 years agomplexer: Add support for write timeouts
Remi Gacogne [Fri, 8 Mar 2019 15:41:22 +0000 (16:41 +0100)]
mplexer: Add support for write timeouts

5 years agomplexer: Make it possible to set the read TTD right away
Remi Gacogne [Mon, 4 Mar 2019 10:32:23 +0000 (11:32 +0100)]
mplexer: Make it possible to set the read TTD right away

5 years agodnsdist: Define empty DNSCrypt-related objects when not enabled
Remi Gacogne [Wed, 27 Feb 2019 13:12:42 +0000 (14:12 +0100)]
dnsdist: Define empty DNSCrypt-related objects when not enabled

This way the rest of the code can mostly ignore whether DNSCrypt
support is enabled.

5 years agodnsdist: Add a function to extract an EDNS0Record from a DNS packet
Remi Gacogne [Wed, 27 Feb 2019 11:06:53 +0000 (12:06 +0100)]
dnsdist: Add a function to extract an EDNS0Record from a DNS packet

5 years agodnsdist: Refactoring of the response handling path
Remi Gacogne [Tue, 26 Feb 2019 13:17:46 +0000 (14:17 +0100)]
dnsdist: Refactoring of the response handling path

5 years agodnsdist: Python 3 compat fixes for the regression tests
Remi Gacogne [Mon, 25 Feb 2019 14:54:58 +0000 (15:54 +0100)]
dnsdist: Python 3 compat fixes for the regression tests

5 years agodnsdist: Refactoring to merge the UDP and TCP paths
Remi Gacogne [Mon, 25 Feb 2019 14:54:13 +0000 (15:54 +0100)]
dnsdist: Refactoring to merge the UDP and TCP paths

5 years agoMerge pull request #7481 from rgacogne/ipcrypt
Remi Gacogne [Thu, 4 Apr 2019 09:31:31 +0000 (11:31 +0200)]
Merge pull request #7481 from rgacogne/ipcrypt

Add support for encrypting IP addresses #gdpr

5 years agoMerge pull request #7620 from shane-kerr/readme-link-fixes
Remi Gacogne [Thu, 4 Apr 2019 09:29:29 +0000 (11:29 +0200)]
Merge pull request #7620 from shane-kerr/readme-link-fixes

Correct dnsdist & recursor information in README

5 years agoMerge pull request #7652 from Habbie/dnsdist-ednsoptionview
Remi Gacogne [Thu, 4 Apr 2019 09:29:04 +0000 (11:29 +0200)]
Merge pull request #7652 from Habbie/dnsdist-ednsoptionview

dnsdist, recursor: EDNSOptionView improvements

5 years agoMerge pull request #7578 from qvr/addtl-gstats
Remi Gacogne [Thu, 4 Apr 2019 09:27:16 +0000 (11:27 +0200)]
Merge pull request #7578 from qvr/addtl-gstats

dnsdist: add frontend response statistics

5 years agoMerge pull request #7343 from rgacogne/dnsdist-dyngroup-smt
Remi Gacogne [Thu, 4 Apr 2019 09:26:24 +0000 (11:26 +0200)]
Merge pull request #7343 from rgacogne/dnsdist-dyngroup-smt

dnsdist: Add addDynBlockSMT() support to dynBlockRulesGroup

5 years agoMerge pull request #7585 from rgacogne/dnsdist-zero-ttl
Remi Gacogne [Thu, 4 Apr 2019 09:25:05 +0000 (11:25 +0200)]
Merge pull request #7585 from rgacogne/dnsdist-zero-ttl

 dnsdist: Prevent 0-TTL cache hits

5 years agoMerge pull request #7586 from rgacogne/dnsdist-null-latency-web
Remi Gacogne [Thu, 4 Apr 2019 09:24:04 +0000 (11:24 +0200)]
Merge pull request #7586 from rgacogne/dnsdist-null-latency-web

dnsdist: Gracefully handle a null latency in the webserver's JS

5 years agoMerge pull request #7598 from jsoref/spelling
Peter van Dijk [Wed, 3 Apr 2019 07:10:09 +0000 (09:10 +0200)]
Merge pull request #7598 from jsoref/spelling

Spelling

5 years agoMerge pull request #7656 from Habbie/dnsdist-macos-build-nit
Peter van Dijk [Wed, 3 Apr 2019 07:03:11 +0000 (09:03 +0200)]
Merge pull request #7656 from Habbie/dnsdist-macos-build-nit

dnsdist README: update macOS instructions

5 years ago1-index recursor EDNSOptionView
Peter van Dijk [Tue, 2 Apr 2019 16:29:04 +0000 (18:29 +0200)]
1-index recursor EDNSOptionView

5 years agodnsdist README: update macOS instructions
Peter van Dijk [Tue, 2 Apr 2019 15:33:53 +0000 (17:33 +0200)]
dnsdist README: update macOS instructions

5 years agoMerge pull request #7654 from aerique/feature/changelog-and-secpoll-for-rec-4.1.12
aerique [Tue, 2 Apr 2019 12:26:43 +0000 (14:26 +0200)]
Merge pull request #7654 from aerique/feature/changelog-and-secpoll-for-rec-4.1.12

Update changelog and secpoll for rec-4.1.12.

5 years agosimplify vector indexing
Peter van Dijk [Tue, 2 Apr 2019 12:11:52 +0000 (14:11 +0200)]
simplify vector indexing

5 years agoadjust indexes in tests
Peter van Dijk [Tue, 2 Apr 2019 12:10:59 +0000 (14:10 +0200)]
adjust indexes in tests

5 years agoUpdate changelog and secpoll for rec-4.1.12.
Erik Winkels [Tue, 2 Apr 2019 11:08:12 +0000 (13:08 +0200)]
Update changelog and secpoll for rec-4.1.12.

5 years agoMerge pull request #7631 from omoerbeek/rec-ecs-cache-limit-with-ttl
Otto Moerbeek [Tue, 2 Apr 2019 08:38:05 +0000 (10:38 +0200)]
Merge pull request #7631 from omoerbeek/rec-ecs-cache-limit-with-ttl

Rec ecs cache limit with ttl

5 years agoLua tables are indexed from 1
Peter van Dijk [Mon, 1 Apr 2019 19:29:55 +0000 (21:29 +0200)]
Lua tables are indexed from 1

5 years agocount is a method, not an attribute
Peter van Dijk [Mon, 1 Apr 2019 19:29:09 +0000 (21:29 +0200)]
count is a method, not an attribute

5 years agoMerge pull request #7507 from rgacogne/rec-bounded-load-balancing
Remi Gacogne [Mon, 1 Apr 2019 13:57:42 +0000 (15:57 +0200)]
Merge pull request #7507 from rgacogne/rec-bounded-load-balancing

rec: Use a bounded load-balancing algo to distribute queries

5 years agoMerge pull request #5932 from pieterlexis/webserver-logging
Pieter Lexis [Mon, 1 Apr 2019 12:43:49 +0000 (14:43 +0200)]
Merge pull request #5932 from pieterlexis/webserver-logging

Improve logging in the webserver

5 years agoReformulate condition and comment to make it more clear.
Otto Moerbeek [Mon, 1 Apr 2019 12:27:27 +0000 (14:27 +0200)]
Reformulate condition and comment to make it more clear.

5 years agoOnly apply "do not cache" if both limits are set and satisfied. Doc tweaks.
Otto Moerbeek [Mon, 1 Apr 2019 09:30:06 +0000 (11:30 +0200)]
Only apply "do not cache" if both limits are set and satisfied.  Doc tweaks.

5 years agorec: Clarify that the server load should be >= to the pondered avg
Remi Gacogne [Fri, 29 Mar 2019 16:20:52 +0000 (17:20 +0100)]
rec: Clarify that the server load should be >= to the pondered avg

(cherry picked from commit b476baebdc5a2ab4170476167aef94b7cdb677ab)

5 years agorec: Keep track of the number of MTasks in a dedicated variable
Remi Gacogne [Fri, 29 Mar 2019 12:32:46 +0000 (13:32 +0100)]
rec: Keep track of the number of MTasks in a dedicated variable

(cherry picked from commit 03a5d29ea3456fd3798ca71ed4f0f7ec7980ee2c)

5 years agoNew approach. I spelled out the logic to make it more clear.
Otto Moerbeek [Fri, 29 Mar 2019 10:40:05 +0000 (11:40 +0100)]
New approach. I spelled out the logic to make it more clear.
Points to keep in mind: > vs >=
What do we do if s_ecscachelimitttl is not set? I chose to let the scope determine
cacheability.

5 years agorec: Make sure that distribution-load-factor is >= 1.0 if set
Remi Gacogne [Thu, 28 Mar 2019 17:30:12 +0000 (18:30 +0100)]
rec: Make sure that distribution-load-factor is >= 1.0 if set

5 years agoAdd tests for ecs-cache-limit-ttl
Otto Moerbeek [Wed, 27 Mar 2019 12:17:06 +0000 (13:17 +0100)]
Add tests for ecs-cache-limit-ttl

5 years agorec: Add a 'rebalanced-queries' metric
Remi Gacogne [Wed, 27 Mar 2019 11:10:37 +0000 (12:10 +0100)]
rec: Add a 'rebalanced-queries' metric

5 years agorec: Use a bounded load-balancing algo to distribute queries
Remi Gacogne [Wed, 20 Feb 2019 16:47:30 +0000 (17:47 +0100)]
rec: Use a bounded load-balancing algo to distribute queries

5 years agoInitial code for ecs-cache-limit-ttl.
Otto Moerbeek [Wed, 27 Mar 2019 11:37:19 +0000 (12:37 +0100)]
Initial code for ecs-cache-limit-ttl.

5 years agoMerge remote-tracking branch 'origin/pr/7572' into rec-ecs-cache-limit-with-ttl
Otto Moerbeek [Wed, 27 Mar 2019 10:34:24 +0000 (11:34 +0100)]
Merge remote-tracking branch 'origin/pr/7572' into rec-ecs-cache-limit-with-ttl

5 years agoMerge pull request #7628 from tcely/patch-3
Remi Gacogne [Wed, 27 Mar 2019 08:45:54 +0000 (09:45 +0100)]
Merge pull request #7628 from tcely/patch-3

Lua QClass global does not exist

5 years agoLua QClass global does not exist
tcely [Tue, 26 Mar 2019 18:04:53 +0000 (14:04 -0400)]
Lua QClass global does not exist

The C code uses `QClass`, but the Lua variable was added as `DNSClass` for whatever reason.

5 years agorec: Set ecs-ipv4-cache-bits and ecs-ipv6-cache-bits in the tests
Remi Gacogne [Tue, 12 Mar 2019 12:22:30 +0000 (13:22 +0100)]
rec: Set ecs-ipv4-cache-bits and ecs-ipv6-cache-bits in the tests

(cherry picked from commit 0cd27a313133139947e6e1b97fe7f1c0164ad40f)

5 years agorec: Document 'ecs-ipv4-cache-bits' and 'ecs-ipv6-cache-bits'
Remi Gacogne [Tue, 12 Mar 2019 11:27:06 +0000 (12:27 +0100)]
rec: Document 'ecs-ipv4-cache-bits' and 'ecs-ipv6-cache-bits'

(cherry picked from commit 4d8c05df7a8fd6045061325693dcf8b17dbd364d)

5 years agorec: Add unit tests for the ECS cache limit feature
Remi Gacogne [Tue, 12 Mar 2019 11:19:13 +0000 (12:19 +0100)]
rec: Add unit tests for the ECS cache limit feature

5 years agorec: Move the ECS cache limit check to the SyncRes
Remi Gacogne [Tue, 12 Mar 2019 11:05:56 +0000 (12:05 +0100)]
rec: Move the ECS cache limit check to the SyncRes

5 years agoimplement a configurable ECS cache limit, defaulting to /24 and /56 of IPv6. So a...
bert hubert [Tue, 12 Mar 2019 10:27:53 +0000 (11:27 +0100)]
implement a configurable ECS cache limit, defaulting to /24 and /56 of IPv6. So a /25 response will not get cached.

(cherry picked from commit 1dab554571edc88ae625c3997294dbcfb1c3507e)

5 years agodnsdist: Add regression tests for protobuf pseudonymization
Remi Gacogne [Tue, 12 Feb 2019 16:06:33 +0000 (17:06 +0100)]
dnsdist: Add regression tests for protobuf pseudonymization

5 years agoBuild ipcrypt as a separate (static) library since it's written in C
Remi Gacogne [Tue, 12 Feb 2019 15:14:29 +0000 (16:14 +0100)]
Build ipcrypt as a separate (static) library since it's written in C

Otherwise we could compile it as C++ code, leading to this warning
from the compiler:

```
cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
```

5 years agoRemove trailing whitespaces
Remi Gacogne [Thu, 31 Jan 2019 13:59:29 +0000 (14:59 +0100)]
Remove trailing whitespaces

5 years agodnsdist: Add IP 'encryption' options to RemoteLog{,Response}Action
Remi Gacogne [Wed, 30 Jan 2019 15:58:04 +0000 (16:58 +0100)]
dnsdist: Add IP 'encryption' options to RemoteLog{,Response}Action

5 years agodnsdist: Don't link OpenSSL's libssl or GnuTLS unless DoT is enabled
Remi Gacogne [Wed, 30 Jan 2019 15:01:39 +0000 (16:01 +0100)]
dnsdist: Don't link OpenSSL's libssl or GnuTLS unless DoT is enabled

5 years agomake pdnsutil support base64 encoded keys for ipcipher
bert hubert [Mon, 19 Feb 2018 09:21:19 +0000 (10:21 +0100)]
make pdnsutil support base64 encoded keys for ipcipher

5 years agofix testrunner
bert hubert [Fri, 16 Feb 2018 21:34:51 +0000 (22:34 +0100)]
fix testrunner

5 years agoupdate docs to key derivation & proper link
bert hubert [Fri, 16 Feb 2018 21:01:02 +0000 (22:01 +0100)]
update docs to key derivation & proper link

5 years agodocument dnswasher flags
bert hubert [Fri, 16 Feb 2018 09:12:43 +0000 (10:12 +0100)]
document dnswasher flags

5 years agomade dnswasher support ipcipher
bert hubert [Fri, 16 Feb 2018 09:03:39 +0000 (10:03 +0100)]
made dnswasher support ipcipher

5 years agodnswasher comment
bert hubert [Thu, 15 Feb 2018 12:58:27 +0000 (13:58 +0100)]
dnswasher comment

5 years agohook up makeIPCipherKey in dnsdist
bert hubert [Thu, 15 Feb 2018 13:03:58 +0000 (14:03 +0100)]
hook up makeIPCipherKey in dnsdist

5 years agosalt was confusing, should be ipcipheripcipher
bert hubert [Wed, 7 Feb 2018 12:18:09 +0000 (13:18 +0100)]
salt was confusing, should be ipcipheripcipher

5 years agofix up salt for pbkdf2
bert hubert [Wed, 7 Feb 2018 09:05:33 +0000 (10:05 +0100)]
fix up salt for pbkdf2

5 years agorename ipcrypt/ipcipher
bert hubert [Thu, 15 Feb 2018 12:51:24 +0000 (13:51 +0100)]
rename ipcrypt/ipcipher

5 years agoadd key derivatin from password, add ipencrypt/ipdecrypt to pdnsutil & document it
bert hubert [Tue, 6 Feb 2018 12:11:32 +0000 (13:11 +0100)]
add key derivatin from password, add ipencrypt/ipdecrypt to pdnsutil & document it

5 years agoadd documentation to dnsdist
bert hubert [Fri, 2 Feb 2018 12:39:28 +0000 (13:39 +0100)]
add documentation to dnsdist

5 years agofix ipcrypt.h in testrunner Makefile
bert hubert [Fri, 2 Feb 2018 11:39:57 +0000 (12:39 +0100)]
fix ipcrypt.h in testrunner Makefile

5 years agoreplace links
bert hubert [Fri, 2 Feb 2018 10:51:28 +0000 (11:51 +0100)]
replace links

5 years agoadd in symlinks for dnsdist
bert hubert [Fri, 2 Feb 2018 10:48:15 +0000 (11:48 +0100)]
add in symlinks for dnsdist

5 years agoAdd support for encrypting IP addresses #gdpr
bert hubert [Fri, 2 Feb 2018 10:43:20 +0000 (11:43 +0100)]
Add support for encrypting IP addresses #gdpr
With this change, PowerDNS core gains ability to encrypt & decrypt IP addresses as described in https://medium.com/@bert.hubert/on-ip-address-encryption-security-analysis-with-respect-for-privacy-dabe1201b476
For IPv4 this uses ipcrypt, for IPv6 it uses a 128-bit AES ECB operation.
This CR also hooks up ipencrypt() and ipdecrypt() methods for dnsdist use, specifically to pseudonomyse logging.

5 years agoMerge pull request #7574 from rgacogne/rec-min-ecs-ttl
Remi Gacogne [Mon, 25 Mar 2019 09:19:58 +0000 (10:19 +0100)]
Merge pull request #7574 from rgacogne/rec-min-ecs-ttl

rec: Add a new ecs-minimum-ttl-override setting

5 years agoMerge pull request #7621 from shane-kerr/lua-required-for-recursor
Remi Gacogne [Mon, 25 Mar 2019 08:51:44 +0000 (09:51 +0100)]
Merge pull request #7621 from shane-kerr/lua-required-for-recursor

Note that Lua is now required for the recursor

5 years agoMerge pull request #7623 from genofire/patch-1
bert hubert [Sun, 24 Mar 2019 21:35:51 +0000 (22:35 +0100)]
Merge pull request #7623 from genofire/patch-1

typo in docs - thanks!

5 years agotypo in docs
genofire [Sun, 24 Mar 2019 21:32:09 +0000 (22:32 +0100)]
typo in docs

5 years agoNote that Lua is now required for the recursor
Shane Kerr [Sat, 23 Mar 2019 10:28:45 +0000 (11:28 +0100)]
Note that Lua is now required for the recursor

5 years agoCorrect dnsdist & recursor information in README
Shane Kerr [Sat, 23 Mar 2019 09:49:11 +0000 (10:49 +0100)]
Correct dnsdist & recursor information in README

5 years agoMerge pull request #7616 from aerique/feature/changelog-and-secpoll-for-auth-4.1.8
aerique [Fri, 22 Mar 2019 14:38:29 +0000 (15:38 +0100)]
Merge pull request #7616 from aerique/feature/changelog-and-secpoll-for-auth-4.1.8

Update changelog and secpoll for auth-4.1.8.

5 years agofix versionadded for gmysql-thread-closer
Peter van Dijk [Wed, 20 Mar 2019 09:35:12 +0000 (10:35 +0100)]
fix versionadded for gmysql-thread-closer

5 years agoMerge pull request #7503 from ahupowerdns/auth-ringbugs
Remi Gacogne [Wed, 20 Mar 2019 08:55:34 +0000 (09:55 +0100)]
Merge pull request #7503 from ahupowerdns/auth-ringbugs

Auth ringbuffer simmaries were case sensitive & accounted delegations incorrectly

5 years agoMerge pull request #7517 from Habbie/mysqlthreadcloser
Remi Gacogne [Wed, 20 Mar 2019 08:55:09 +0000 (09:55 +0100)]
Merge pull request #7517 from Habbie/mysqlthreadcloser

plug mysql_thread_init memory leak

5 years agoMerge pull request #7529 from rgacogne/auth-clear-metadata-on-delete
Remi Gacogne [Wed, 20 Mar 2019 08:54:39 +0000 (09:54 +0100)]
Merge pull request #7529 from rgacogne/auth-clear-metadata-on-delete

auth: Clear caches (meta-data, keys) on domain deletion

5 years agoMerge pull request #7587 from rgacogne/auth-qsizeq
Remi Gacogne [Wed, 20 Mar 2019 08:52:32 +0000 (09:52 +0100)]
Merge pull request #7587 from rgacogne/auth-qsizeq

auth: Ensure we increase the number of queued queries before decreasing it

5 years agoMerge pull request #7595 from rgacogne/auth-packetcache-tests-contention
Remi Gacogne [Wed, 20 Mar 2019 08:52:03 +0000 (09:52 +0100)]
Merge pull request #7595 from rgacogne/auth-packetcache-tests-contention

auth: Avoid contention issues in the packet cache's unit tests

5 years agospelling: version
Josh Soref [Tue, 19 Mar 2019 17:13:04 +0000 (13:13 -0400)]
spelling: version

5 years agospelling: syscall
Josh Soref [Tue, 19 Mar 2019 17:12:58 +0000 (13:12 -0400)]
spelling: syscall

5 years agospelling: successful
Josh Soref [Tue, 19 Mar 2019 17:12:33 +0000 (13:12 -0400)]
spelling: successful

5 years agospelling: iterator
Josh Soref [Tue, 19 Mar 2019 20:15:42 +0000 (16:15 -0400)]
spelling: iterator