- Finally implement fixups and use them in the detailer and updater
thread as appropriate. We now longer crash/hang when there is an MD5
checksum error, but request a fixup (or fail, if the checksum error is
from a fixup).
- Portability fix: don't use SIZE_T_MAX when ~0 will do fine.
- Plug a memory leak in keyword_prepare().
- Fix the build without assertions.
- Properly check for the success of the asynchronous connect() when we've
been interrupted by a signal. Move the logic into proto_waitconnect().
- Properly print transport layer addresses with getnameinfo() and the
NI_NUMERICHOST flag. We were printing garbage...
- Assert that we're never printing a NULL string in proto_printf().
- Make sure we disallow 0-length fields in proto_get_ascii() or all sorts
of bad things will happen. Also remove a useless check.
- In statusrec_cook(), there is nothing left to parse for DirDown
entries, however we have to check that there was nothing left in the
line, or return an error if it's not the case.
- Restore the original string upon error in fattr_scanattr(), called by
fattr_encode() only.
- The struct diff used by diff_apply() and keyword_expand() has been
rename to struct diffinfo, and it now only contains the metadata
of a diff. This changes the prototype for the two aforementioned
functions, so update the code and the consumers appropriately.
- Create the worker threads in the detached state since we don't use
pthread_join() to wait for them but have our own API for that (which
allows us to wait for multiple threads).
- Move the fattr_init() and fattr_fini() calls earlier to avoid calling
them several times during a run.
- When printing the "Connected to" message, print the actual address we
are connected. This makes us deviate slightly from CVSup, but since
csup tries any address returned by a host (including IPv6 addresses),
we really need to know where we connected.
- Make the errors/error messages handling much nicer in the status file
API. Nearly all the asprintf() calls are centralized now.
- Before entering multi-threaded mode, starts a "killer" thread that
will spend most of his time blocking in sigwait() and will call
mux_shutdown() to nicely abort the run in case we get a fatal signal.
- Remove the need for the "closing" condition variable in
mux_shutdown(), we are now handling the race it protected against
much more sanely. We just disable cancellation in the "killer" thread
before calling mux_shutdown() and re-enable it afterwards. This way,
we can stop the killer thread at any time and after having joined it
we know it is safe to call mux_close() since there are no more
references to it but us.
- Update the lister, detailer and updater threads to correctly check for
error on read/write/parsing. Generate a proper error message in each
case and return it back to the main thread, along with a status code
indicating either success, failure or a transient failure.
- Always call status_close() in the updater thread, to ensure that the
status file is properly updated even if we are being interrupted by an
error.
- Slightly tweak the threads API to make it match our needs more closely.
- Add a few useful comments here and there.
- Rename proto_init() to the more correct proto_run() name.
- Use the status code returned by the worker thread to only retry a run
when we had a transient error, and to return a proper exit code at the
end of the program's execution.
- Many minor stuff.
All those changes allow csup to properly handle any synchronous or
asynchronous error and to print meaningul messages nearly all the time,
without duplicated messages. Hangs should not happen anymore, even in
case of an error. We also correctly handle being sent some signals such
as SIGINT, by correctly updating the status file and cleaning after us,
so ^C is usable. Finally, csup now returns a proper exit code: 0 in case
of success or 1 in case of an error, similarly to CVSup. Oh, and since
fixups are now supported, I'd call csup "production ready", module the
bugs I have introduced.
Please give this version as much testing as you can!
Change some URLs from author dirs to dist dirs.
The example in the porter's handbook didn't have the trailing slash;
mea culpa for not having caught that when it went in.
We have not checked for this KEYWORD for a long time now, so this
is a complete noop, and thus no PORTREVISION bump. Removing it at
this point is mostly for pedantic reasons, and partly to avoid
perpetuating this anachronism by copy and paste to future scripts.
the backup sites listed do _not_ work now. I have been unable
to find a working mirror from the http://www.openh323.org site.
Both ports should have freebsd.org backup sites listed.
Hand maintainership to submitter.
PR: 93583
Submitted by: Diane Bruce <db@db.net>
Service Requests in your Perl code. It performs these NetBIOS operations over
TCP/IP using Perl's built-in socket support.
WWW: http://search.cpan.org/dist/Net-NBName/
Committed by: aaron
Approved by: tobez (implicit)
2006-02-15 Jochen Wiedmann <jwied@cpan.org> (0.39)
* t/forkm.t: Hopefully, I finally got rid of the
problem with the forking tests. It seems, that
the perlipc manual got updated in the past years,
most possibly for the same reason: A child handler
must be written to catch childs in a loop.
The idea is that IPFilter in its current state can already do a simple L4
round-robin in its NAT rules. However, it does not detect or sense when a
service and/or host is down. It will continue to send requests to a downed
service/host.
However, IPFilter lets us add and remove rules on-the-fly so it should be
possible to build a daemon that lets you specify "clusters". In each cluster
you would specify its members/hosts and services. As well as a health-check
for the service to determine its current state.
Once a service was deemed "up" we would add a Round-Robin rule to the NAT
table, and naturally, the reverse once we detect a service as being "down".
In addition to this, this program can optionally add ipf rules to log for RST
(reset) packets coming from the members of your clusters. In the situations
where the software/port goes down, but the host itself is still working, we
would detect failure instantly. (Since the forwarded connections to the service
would trigger a RST packet back). If this option is enabled, l4ip spawns the
"ipmon" command to monitor for the "log" entries given when such a packet is
detected. l4ip will then mark the service down. This is an add-on feature and
is strictly not necessary for functional usage. It is currently only supported
for TCP.
WWW: http://www.lundman.net/unix/l4ip.php