| Commit message (Collapse) | Author | Age |
| | |
|
| | |
|
| |
|
|
|
|
| |
This special cases the URL parser for inproc and IPC urls,
changing so that they no longer parse the thing after the ://
as anything special. This allows IPC URLs to be relative.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This recycles the job structures, and so the demo seems
to work. If you have sufficient concurrency, these aio
structures will ultimately leak (with the level of concurrency),
but for this demo that's fine. (To keep them from leaking, you'd
walk the freelist and discard them just before exiting. The
actual growth of the list should be quite small.) There are
other strategies that could be used to avoid uncontrolled growth,
but they aren't useful for our demo purposes. Also, when we have
a fix for 511, we can go ahead and just do a deferred discard.
As aios are used *heavily* in the code, the strategy of a deferred
cache may help reduce presssure on the heap, andd might be something
we want to explore for the core.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This avoids copying the tests, but runs them with bash from
the source directory, and passes the path to the built nngcat
binary to the script.
It also permits these to run if we find bash, so that systems
without bash won't run it and fail.
We still only do this on POSIX though, because Windows bash
is too broken to use for some of the tests.
|
| | |
|
| |
|
|
|
|
|
| |
These were found with the help of "aspell".
Additionally, while reviewing the output from the spell checker,
several content errors were noticed and fixed.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This enables the software to be built for Android, going back to
at least Android SDK r15 (IceCreamSandwich) and at least up to
SDK r27 (Oreo). Older versions of Android may work, but we have
no way to build them to test.
While here we have changed our CMake configuration to disable
building tools or tests when we detect a cross-compile situation.
Documentation for cross-compilation is updated as well.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
fixes #494 ERRORS section should use [horizontal]
These changes address some basic formatting consistency things,
and ultimately (when combined with other tooling changes that are
not part of this repo) lead to vastly improved layout in the
printed documentation.
While here we removed trailing whitespace, and did certain other
minor markup tweaks.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fixes #490 posix_epdesc use-after-free bug
fixes #489 Sanitizer based testing would help
fixes #492 Numerous memory leaks found with sanitizer
This introduces support for compiler-based sanitizers when using
clang or gcc (and not on Windows). See NNG_SANITIZER for possible
settings such as "thread" or "address".
Furthermore, we have fixed the issues we found with both the
thread and address sanitizers. We believe that the thread issues
pointed to a low frequency use-after-free responsible for rare
crashes in some of the tests.
The tests generally have their timeouts doubled when running under
a sanitizer, to account for the extra long times that the sanitizer
can cause these to take.
While here, we also changed the compat_ws test to avoid a particularly
painful and time consuming DNS lookup, and we made the nngcat_unlimited
test a bit more robust by waiting before sending traffic.
|
| |
|
|
|
| |
The test itself is not sanitizer friendly, and we don't need to do
this meta testing; convey already does it in it's own repo.
|
| |
|
|
|
|
|
| |
The fallback logic was unnecessarily complicated, and found to be
somewhat data-racy; on modern systems initializing these things
never fails, and on BSD systems that only occurs under extreme
memory shortage.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fixes #485 Honor BUILD_SHARED_LIBS
fixes #483 Don't expose private symbols in shared library
fixes #481 Export CMake target
This is a "large" commit involving changes that don't affect the
code directly, but which have an impact on how we package and build
our project.
The most significant of these changes is that we now build only
either a shared or a static library, depending on the setting of
the BUILD_SHARED_LIBS option. We also suppress private symbols
from being exposed when the underlying toolchain lets us do so.
Minor updates to the way we version the ABI are used, and we now
have a nice exported CMake project.
To import this project in another, simply do find_package(nng)
and you can add target_link_libraries(nng::nng) to your targets.
CMake does the rest for you.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
fixes #464 Support NN_WS_MSG_TYPE option (compat)
fixes #415 websocket does not honor recv maxsize
This fixes a significant (and security) issue in websocket, where the
code does not honor a maximum receive size. We've exposed new API
(internal) to set the limit on the frame size, and we've changed the
default to *unlimited* for that internal API. (But the default for SP
sockets, which are the only consumers at present, is still 1MB just like
all other SP transports.)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fixes #468 TCP nodelay and keepalive should start usable
fixes #467 NN_RCVMAXSZ option does not work (compat)
fixes #465 Support NN_OPT_TCPNODELAY (compat)
This is a rather larger change set than I'd like, but when adding
support for legacy TCP keepalive, I found a number if issues using
the legacy TCP test (which we are introducing with this commit.)
This fixes the concerns that are relevant and addressible.
We have elected not to try to support to local address binding at this
time, and the IPv6 test case in the old code was wrong, so changes
relevant to that are commented out.
I've also updated the nng_compat manual page to reflect additional
caveats that folks should be aware of, including the previously
undocumented caveat around the NN_SNDBUF and NN_RCVBUF options.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
As part of this code fix, we needed to add filtering support to the
msgq_tryput code path -- it turns out that code path was bypassing
the filterfn altogether.
Eventually we'll remove all this filtering stuff from the msgq code
and replace it with inline filtering directly in sub.
|
| |
|
|
|
|
|
|
|
|
| |
I actually made these real headers, not stubs
While here I made some improvements to the nng_compat man page,
to improve the language and also the presentation on some devices.
(We were going nuts with the icons, instead, I've made a single new
section, called Caveats, that lists a bunch of them.)
This should not have any impact on binary compatibility.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
While here, we have actually cleaned this up and enabled documentation
building to work, for folks that want it. We default to off, because
frankly folks should just use the website and be happy.
If docs are enabled, then both man pages and html are generated.
The man pages are noticably inferior (only so much you can do with
80 columns of text), but some people have indicated they prefer to
be able to type "man" something.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
We have the constructors for sockets with filenames without the
version, such as nng_req_open.3. This broken link was found when
building the epub book.
|
| | |
|
| |
|
|
|
|
| |
We've added a new macro, NNG_RELEASE_SUFFIX. If this is not empty,
then the release should be considered a pre-release, with no specific
stability guarantees.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes nni_task_fini to always run synchronously, waiting
for the task to finish before cleaning up. Much simpler code.
Additionally, we've refactored the resolver code to avoid the
use of taskqs, which added complexity and inefficiency. The
approach of just allocating its own threads and a work queue
to process them turns out to be vastly simpler, and actually
reduces extra allocations and context switches.
wip
POSIX resolv threads.
(Taskqs are just overhead and complexity here.)
Windows resolver changes.
Task cleanup.
fix up windows mutex.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This changes the signature of nng_pipe_notify(), and the associated
events. The documentation is updated to reflect this.
We have also broken the lock up so that we don't hold the master
socket lock for some of these things, which may have beneficial
impact on performance.
|
| | |
|
| |
|
|
|
|
|
|
| |
This changes the array of flags, which was confusing, brittle, and
racy, into a much simpler reference (busy) count on the task structures.
This allows us to support certain kinds of "reentrant" dispatching,
where either a synchronous or asynchronous task can reschedule / dispatch
itself. The new code also helps reduce certain lock pressure, as a bonus.
|
| |
|
|
| |
We also fixed some warnings found by gcc8.
|
| | |
|
| |
|
|
| |
fixes #438 Consider dropping AI_V4MAPPED
|