On the ESP32, socket.getaddrinfo() might return SOCK_DGRAM instead of
SOCK_STREAM, eg with ".local" adresses. As a HTTP request is always a TCP
stream, we don't need to rely on the values returned by getaddrinfo.
Even though we use HTTP 1.0, where closing connection after sending
response should be the default, some servers ignore this requirement and
keep the connection open. So, explicitly send corresponding header to get
the expected behavior.
This is controlled by parse_headers param to request(), which defaults to
True for compatibility with upstream requests. In this case, headers are
available as .headers of Response objects. They are however normal (not
case-insensitive) dict.
If parse_headers=False, old behavior of ignore response headers is used,
which saves memory on the dict.
Finally, parse_headers can be a custom function which can e.g. parse only
subset of headers (again, to save memory).
Without this change, current implementaiton produces a false positive
result for AssertionError type.
Example of falsely passing test code:
def test(a, b):
assert a > 10
assert b > 10
self.assertRaises(AssertionError, test, 20, 20)
A number of fields (services, appearance, manufacturer, name) can appear
when a scan is requested. However there is only so much space in the
header so, if a user has configured multiple fields, some may be 'pushed'
into the active scan response which requires additional communication.
When iOS scans for BLE devices it can filter by services, and so services
must be in the advertising (as opposed to scan response) payload.
- cp() copies a file. If the target is a directory, the file is copied
into that directory. It uses a small buffer, so it's not fast.
- ls uses ilistdir and creates a sorted output with directories listed as
the first group.
- rm optionally deletes recursive, if the target is a directory.
It can be difficult using the codeformat.py tool when there are other files
in the repository not currently matching the standard.
For developers, running over the entire repo can throw up a large list of
changes in a local git which can lead to inclusion of unrelated changes in
commits if they're added accidentally. If the files arg is used to trim
down the list of files scanned, it runs a risk of missing some files
they've modified. In CI, it means that PR's can fail on codeformat for
issues that aren't related to that PR.
This change adds a git query in the codeformat tool by default to only work
on the list of files that have been modified in the current branch. This
can still be overridden by the files arg to run over all files still, eg.
python3 tools/codeformat.py -v '**'.