/[wanproxy]/releases/wanproxy-0.5.0
ViewVC logotype

Log of /releases/wanproxy-0.5.0

View Directory Listing Directory Listing


Sticky Revision:

Revision 211 - Directory Listing
Modified Thu Aug 13 00:37:54 2009 UTC (12 months, 3 weeks ago) by juli
Update for 0.5.0.

Revision 210 - Directory Listing
Modified Thu Aug 13 00:36:17 2009 UTC (12 months, 3 weeks ago) by juli
Copied from: trunk revision 209
Branch 0.5.0.

Revision 209 - Directory Listing
Modified Thu Aug 13 00:14:54 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
Forcefully set the ConfigType pointer to NULL in case of failure sine GCC seems
to be confused about this in many versions.  XXX Would be nice to conditionalize
but it seems to be a great many versions, indeed.

Revision 208 - Directory Listing
Modified Wed Aug 12 23:44:19 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
Nuke some now-irrelevant TODO items.

Revision 207 - Directory Listing
Modified Wed Aug 12 23:36:26 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
o) Add some helper methods to simplify configuration classes.
o) Make ConfigObject a class not a struct and hide its implementation details a
   bit.

Revision 206 - Directory Listing
Modified Wed Aug 12 23:05:12 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
o) Switch to single-string connect() and bind().
o) Make ports strings.
o) Use getsockname() to construct the listening address if bind() with
   port of 0, rather than passing in a pointer to the port, simplifying
   the API for non-0 code.
o) Add getsockname() pass-through to TCPServer.

Revision 205 - Directory Listing
Modified Wed Aug 12 21:41:21 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
Update TODO a bit.

Revision 204 - Directory Listing
Modified Tue Aug 11 02:11:00 2009 UTC (12 months, 3 weeks ago) by juli
Original Path: trunk
Fix heavy-handed :%s///.

Revision 203 - Directory Listing
Modified Thu Aug 6 23:56:04 2009 UTC (13 months ago) by juli
Original Path: trunk
Logic and consistency fixes for unix domain sockets.

Revision 202 - Directory Listing
Modified Thu Aug 6 23:54:28 2009 UTC (13 months ago) by juli
Original Path: trunk
Actually compile and compile-fix.

Revision 201 - Directory Listing
Modified Thu Aug 6 23:53:46 2009 UTC (13 months ago) by juli
Original Path: trunk
Add experimental AF_UNIX support; compile-tested.

Revision 200 - Directory Listing
Modified Thu Aug 6 23:47:23 2009 UTC (13 months ago) by juli
Original Path: trunk
Add compile-tested Unix domain socket support.  I'd like to make CLI<->WANProxy
use Unix domain sockets, and this also helps clarify how the Socket API and
implementation need to change to be more general.

Revision 199 - Directory Listing
Modified Thu Aug 6 22:40:17 2009 UTC (13 months ago) by juli
Original Path: trunk
Check in expansion of ConfigClassAddress to allow for fields necessary for use
of Unix domain sockets.

Revision 198 - Directory Listing
Modified Thu Aug 6 22:39:12 2009 UTC (13 months ago) by juli
Original Path: trunk
Call base class activation routine.

Revision 197 - Directory Listing
Modified Tue Aug 4 02:57:16 2009 UTC (13 months ago) by juli
Original Path: trunk
Blow up nicely if the Buffer * passed to write() is empty, instead of blowing
up in Buffer::skip() later on.

Revision 196 - Directory Listing
Modified Sun Aug 2 20:49:28 2009 UTC (13 months ago) by juli
Original Path: trunk
Make accept virtual.

Revision 195 - Directory Listing
Modified Sat Aug 1 09:00:38 2009 UTC (13 months ago) by juli
Original Path: trunk
Only ever try to read 64K onto the stack at a time.

Revision 194 - Directory Listing
Modified Sat Aug 1 08:47:49 2009 UTC (13 months ago) by juli
Original Path: trunk
Fix accidentally-aggressive s/Proxy/ProxySocks/g.

Revision 193 - Directory Listing
Modified Sat Aug 1 08:21:54 2009 UTC (13 months ago) by juli
Original Path: trunk
Make <algorithm> part of the common environment.

Revision 192 - Directory Listing
Modified Fri Jul 31 19:34:34 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Make close, read and write virtual.

Revision 191 - Directory Listing
Modified Thu Jul 30 10:03:03 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Record io's dependency on event and net's dependency on event and io.

XXX This approach is kind of ugly.  Perhaps just REQUIREMENTS or DEPENDENCIES
    or something and either make it hard to find out which library's requirement
    is unmet, or make it slightly less ugly at best, like, DEPENDENCIES+=io:net
    rather than IO_DEPENDENCIES+=net.  Almost better to just hard-code it.  But
    not quite.

Revision 190 - Directory Listing
Modified Thu Jul 30 09:58:09 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Add a hastily-tried way to ensure that library dependencies are honored.

Revision 189 - Directory Listing
Modified Thu Jul 30 09:52:08 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Stop using FreeBSD-like PROG_CXX variable and call it PROGRAM instead.

Revision 188 - Directory Listing
Modified Thu Jul 30 05:40:46 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Disable -g on SunOS systems since at least my OpenSolaris setup can't link with it.

Revision 187 - Directory Listing
Modified Thu Jul 30 05:13:54 2009 UTC (13 months, 1 week ago) by juli
Original Path: trunk
Do not assume that <stdarg.h> will be leaked into the namespace.

Revision 186 - Directory Listing
Modified Tue Jun 30 17:33:29 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Attempt to prioritize by way of hypothetical releases.

Revision 185 - Directory Listing
Modified Tue Jun 30 04:59:28 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Update.

Revision 184 - Directory Listing
Modified Tue Jun 30 04:50:13 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Remove FlowTables and the FlowMonitor since the new configuration format doesn't
support either yet.  They can come back when there's a reasonable integration
plan.

Revision 183 - Directory Listing
Modified Sun Jun 28 01:19:31 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Add config directory and mention os directory's non-use as yet.

Revision 182 - Directory Listing
Modified Sun Jun 28 00:54:19 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Add rather hackish proxy support for the new configuration system.

Revision 181 - Directory Listing
Modified Sun Jun 28 00:27:40 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Rather hackishly create SOCKS proxy listeners.

Revision 180 - Directory Listing
Modified Sat Jun 27 19:35:46 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Unify duplicated code from the various poll implementations into poll.h.

Revision 179 - Directory Listing
Modified Sat Jun 27 09:21:33 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Move program.mk into common/ to make tab-completion of programs/ less ugly and
to hide implementation details from the top-level file list.

Revision 178 - Directory Listing
Modified Fri Jun 26 06:19:10 2009 UTC (14 months, 1 week ago) by juli
Original Path: trunk
Small steps towards proxy activation.

Revision 177 - Directory Listing
Modified Tue Jun 16 03:09:11 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
o) Temporarily disable a destructor assertion in Config since we're not to the
   point of starting proxies, let alone shutting them down correctly.
o) Add skeleton proxy and proxy-socks ConfigClasses.

Revision 176 - Directory Listing
Modified Tue Jun 16 00:11:41 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
We implicitly make <string> a part of the standard environment for WANProxy by
needing it in <common/log.h>, so be explicit and put it in <common/common.h> since
it's basically indispensible like the logging and debugging stuff.  This allows
me to clean up recent confusion I've introduced about this in the config code.

Revision 175 - Directory Listing
Modified Mon Jun 15 23:02:27 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Remove TODO.  The remainder of the work is WANProxy-specific.

Revision 174 - Directory Listing
Modified Mon Jun 15 22:59:42 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Sketch codec configuration and uncomment relevant bits of wanproxy.conf.

Revision 173 - Directory Listing
Modified Mon Jun 15 17:54:18 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Support pointers to "None" as used in the wanproxy.conf.

Revision 172 - Directory Listing
Modified Mon Jun 15 17:53:08 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add a WANProxy peer ConfigClass.

Revision 171 - Directory Listing
Modified Mon Jun 15 17:47:28 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
o) Add a network address ConfigClass.
o) Fix parsing of references to other configuration parameters.
o) Clean up some left-over ConfigClassString stuff in ConfigClassInt.
o) Add a stub WANProxy interface ConfigClass.
o) Comment out codec0 stuff since I want to take care of the rest of the
   stuff in wanproxy.conf first.

Revision 170 - Directory Listing
Modified Mon Jun 15 08:41:33 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Saner speculation as to class names.


Revision 169 - Directory Listing
Modified Mon Jun 15 08:36:45 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Get the class name from the ConfigClass rather than requiring it be passed down.

Revision 168 - Directory Listing
Modified Mon Jun 15 04:46:42 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add an address family config type.

Revision 167 - Directory Listing
Modified Mon Jun 15 04:42:43 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Strike off a TODO item.

Revision 166 - Directory Listing
Modified Mon Jun 15 04:41:10 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add a ConfigType for referencing another ConfigObject.

Revision 165 - Directory Listing
Modified Mon Jun 15 01:59:56 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add untested reference resolution code.

Revision 164 - Directory Listing
Modified Sun Jun 14 22:06:14 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Stash the value string in the ConfigValue.

Revision 163 - Directory Listing
Modified Sun Jun 14 19:42:41 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
o) Add a templated enum config type.
o) Make log-level an enum.
o) Make Log::mask take a Log::Priority rather than a string for the log level.
o) Make example configuration use the new enum log-level rather than a string.

Revision 162 - Directory Listing
Modified Sun Jun 14 19:05:08 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Wrongly mark destructors for ConfigClass and ConfigType virtual to please GCC.

Revision 161 - Directory Listing
Modified Fri Jun 12 07:00:20 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add a TODO just for config-related stuff.

Revision 160 - Directory Listing
Modified Fri Jun 12 06:38:27 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add an untested integer type.

Revision 159 - Directory Listing
Modified Thu Jun 11 21:34:49 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
o) Add log-mask class.
o) Temporarily make the log mask itself a string rather than an enum since there
   is not yet a type for enums.

Revision 158 - Directory Listing
Modified Thu Jun 11 21:33:59 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Stash the correct string.

Revision 157 - Directory Listing
Modified Thu Jun 11 21:27:54 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Try writing a test class and type.

Revision 156 - Directory Listing
Modified Thu Jun 11 20:52:53 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add an add_member method for adding members.  Change visibility of everything.

Revision 155 - Directory Listing
Modified Thu Jun 11 20:52:19 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Add commented-out import statements for each class that we need to support.

Revision 154 - Directory Listing
Modified Thu Jun 11 20:39:56 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Stash pointers back to the configuration in values and objects.

Revision 153 - Directory Listing
Modified Thu Jun 11 20:37:44 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Remove README now that the skeletal configuration stuff is in place.

Revision 152 - Directory Listing
Modified Thu Jun 11 20:33:19 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Flesh out more of the configuration system.

Revision 151 - Directory Listing
Modified Thu Jun 11 20:32:21 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Forward-declare Config before referencing it; print out the correct token in an
error.

Revision 150 - Directory Listing
Modified Thu Jun 11 08:29:49 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
I think it will be nice to copy values/scalars from other objects.

Revision 149 - Directory Listing
Modified Thu Jun 11 07:56:40 2009 UTC (14 months, 3 weeks ago) by juli
Original Path: trunk
Break configuration entirely:

Begin introducing the new configuration system.  Right now it does nothing, but
this is a promise to fix it real soon now.

Update the WANProxy configurator to use it and update wanproxy.conf to, as well.

Revision 148 - Directory Listing
Modified Wed Jun 10 07:03:51 2009 UTC (14 months, 4 weeks ago) by juli
Original Path: trunk
I think definitions need to go OOB, too.

Revision 147 - Directory Listing
Modified Tue Jun 9 07:25:20 2009 UTC (14 months, 4 weeks ago) by juli
Original Path: trunk
Add a README describing what the new config system should look like...

Revision 146 - Directory Listing
Modified Sat Jun 6 08:33:00 2009 UTC (15 months ago) by juli
Original Path: trunk
Remove zig-zag codec, which didn't prove even remotely useful.

Revision 145 - Directory Listing
Modified Fri May 8 08:44:33 2009 UTC (16 months ago) by juli
Original Path: trunk
Remove obsolete File interface.

Revision 144 - Directory Listing
Modified Sat Apr 25 05:51:52 2009 UTC (16 months, 1 week ago) by juli
Original Path: trunk
Nuke some whitespace.

Revision 143 - Directory Listing
Modified Fri Apr 24 21:14:45 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Try to compute the zig-zag table in a more novel way.  XXX It's pretty
non-optimal code, still, with too many edge cases.

Revision 142 - Directory Listing
Modified Fri Apr 24 03:53:47 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Add a comment about a minor epiphany I've had about how to do this.

Revision 141 - Directory Listing
Modified Thu Apr 23 19:20:41 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
When decoding ZZCodec data, fill up a BufferSegment at a time, rather than a
Buffer, since we can make the column size dependent on the BufferSegment length
and this is much quicker (due to avoiding the obvious indirection.)

Revision 140 - Directory Listing
Modified Thu Apr 23 19:15:55 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Reflect that XCodec is basically dependent on the BufferSegment length.

Revision 139 - Directory Listing
Modified Thu Apr 23 12:43:58 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
o) Add ZZCodec, which zig-zag transforms blocks of data.  This produces fewer
   hits overall when used with XCodec, including greatly-reduced collisions,
   which means it's probably better for repeated data, but worse for initial
   compression.  Need to investigate how it performs for small deltas.
o) Add zztack, which uses ZZCodec like tack uses XCodec.

Revision 138 - Directory Listing
Modified Wed Apr 22 07:15:25 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
o) Add verbosity levels, at 1+, display hashes and single characters, at 2+,
   display hexdumps of entire segments in hash declarations.

Revision 137 - Directory Listing
Modified Wed Apr 22 06:28:24 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Add a partly-formulated idea.

Revision 136 - Directory Listing
Modified Tue Apr 21 08:34:30 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Add missing Makefile.

Revision 135 - Directory Listing
Modified Mon Apr 20 23:31:58 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Add more comments.

Revision 134 - Directory Listing
Modified Mon Apr 20 20:55:26 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Add the xcdump program, a WIP that will humanize an XCodec stream.

Revision 133 - Directory Listing
Modified Sat Apr 18 08:23:27 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Mention switching to getnameinfo(3).

Revision 130 - Directory Listing
Modified Sat Apr 18 04:50:48 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Undo some gratuitous double-quoting of things including a path, which was not
done consistently enough, and which BSD Make doesn't really support internally
well enough, that was originally done when working on Interix support, where it
turned out to be advantageous all around to just build in /tmp or somewhere else
that wasn't going to have a space in its path.

Revision 129 - Directory Listing
Modified Sat Apr 18 04:05:51 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
o) Set OSNAME in program.mk rather than in each library that needs it.
o) If running OpenBSD, disable -Werror, since OpenBSD has an ancient compiler
   that bogusly warns about private destructors without any defined friends.

Revision 128 - Directory Listing
Modified Sat Apr 18 01:23:26 2009 UTC (16 months, 2 weeks ago) by juli
Original Path: trunk
Make everything build on OpenSolaris.
o) Include <errno.h> in cases where the extern definition of errno may be
   needed, in addition to <sys/errno.h>.
o) Remove serial interface support code, it has not been needed and will not
   likely be needed in the WANProxy repository.
o) On SunOS, add -lnsl and -lsocket when using IO routines as networking
   support requires them.
o) On SunOS, like on Linux, do not populate a 'len' field of a socket address.
o) Mark a bad assertion with a comment.
o) Don't use gethostbyname2(3) on SunOS, sigh.  Would be good to write a
   simple non-blocking resolver anyway...
o) Attempt to use the SunOS method of endianness-determination at compile
   time.  Hopefully I got that right.

Revision 127 - Directory Listing
Modified Wed Apr 15 08:48:31 2009 UTC (16 months, 3 weeks ago) by juli
Original Path: trunk
Add missing includes of unistd.h for close and usleep.

Revision 126 - Directory Listing
Modified Tue Apr 7 09:32:29 2009 UTC (17 months ago) by juli
Original Path: trunk
Add a TODO to finally tackle the problem of IPv6, lack of a good network address
representation, etc.

Revision 125 - Directory Listing
Modified Tue Apr 7 07:58:30 2009 UTC (17 months ago) by juli
Original Path: trunk
Move the Timer class to the common module from the event module.  It is a more
logical fit there with other general facilities like logging and buffers than
with the event system, which it has no direct relation to.  This also means that
in the future the test code can do timing tests (since test support is in
common as well) and that tack now builds no gratuitous code.

Revision 124 - Directory Listing
Modified Tue Apr 7 07:54:55 2009 UTC (17 months ago) by juli
Original Path: trunk
Move networking-specific code out to 'net' library.  Mostly wrappers for now,
but I'm sure that will change.

Revision 123 - Directory Listing
Modified Thu Apr 2 00:47:10 2009 UTC (17 months ago) by juli
Original Path: trunk
A better default configuration, maybe.

Revision 122 - Directory Listing
Modified Tue Mar 31 09:35:03 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Delete listeners, etc., on shutdown.

Revision 121 - Directory Listing
Modified Tue Mar 31 06:09:53 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Change the stop-handling API to a general register_interest API that can
register interest in all sorts of one-shot events.  For now, just support the
EventInterestStop interest type.  Others that are likely include
EventInterestIdle for when there's no events pending, EventInterestLowMemory for
when memory is becoming scarce, etc.

Revision 120 - Directory Listing
Modified Tue Mar 31 05:41:26 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Add stopping of ProxyClients.

Revision 119 - Directory Listing
Modified Tue Mar 31 05:28:57 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Add stop handlers for the proxy listeners and the flow monitor.

Revision 118 - Directory Listing
Modified Tue Mar 31 05:28:24 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Make poll and select EventPoll implementations friendly to EINTR like kqueue.

Revision 117 - Directory Listing
Modified Tue Mar 31 05:26:07 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
o) When deleting a CallbackQueue, make sure it's empty.
o) Make CallbackQueue::empty() const.
o) Add a SIGINT handler and a mechanism to stop and register for callback on
   stop of the Event System.
o) The TimeoutQueue::perform function should always drain and remove its
   CallbackQueue if it executes one at all.  No need for all the back and forth
   if there are multiple timeouts that expire at the same time.
o) Make it okay for kqueue to return EINTR.
o) Only claim that a TimeoutQueue is not empty if at least one of its
   CallbackQueues is empty.  The comment that used to be here was right --
   since items can be removed from those queues by a cancel, it's important to
   actually check.

Revision 116 - Directory Listing
Modified Mon Mar 30 04:10:52 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Drop references in the cache and then clear the hash map out, rather than
erasing and dropping reference on an entry at a time.  The new way seems to be
quite a lot faster.

Revision 115 - Directory Listing
Modified Sat Mar 28 07:57:56 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Drop references to BufferSegments appropriately.  Thanks, Valgrind!

Revision 114 - Directory Listing
Modified Sat Mar 28 07:03:25 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Drop references to BufferSegments as they are evicted from the XCodecWindow.

Revision 113 - Directory Listing
Modified Sat Mar 28 06:15:36 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Drop references when destroying the cache.

Revision 112 - Directory Listing
Modified Fri Mar 27 07:50:58 2009 UTC (17 months, 1 week ago) by juli
Original Path: trunk
Fix build with GCC 4.4, note some flags that may be useful in the future, etc.
Instead of including common/log.h and common/debug.h on the command line, just
include common/common.h, and let that include headers that are globally-desired,
namely stdint stuff and common/log.h and common/debug.h.  Elsewhere, include
headers that are required at least with GCC 4.4 at least in GNU++0x mode to get
certain functions and constants to be visible.

Revision 111 - Directory Listing
Modified Sun Mar 22 23:57:11 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Don't use File when we basically want synchronous file semantics.  (Especially
since poll doesn't seem to work right on Files.)  Use an fstream to read the
config file.

Revision 110 - Directory Listing
Modified Sun Mar 22 20:30:33 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Add a CLI TODO.

Revision 109 - Directory Listing
Modified Sun Mar 22 10:31:37 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Add a hackish EventPoll implementation using select(2).  I hate select(2).

Revision 108 - Directory Listing
Modified Sun Mar 22 07:59:11 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Remove the tcache subsystem until something is going to use it.

Revision 107 - Directory Listing
Modified Sun Mar 22 07:58:49 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Describe layout.

Revision 106 - Directory Listing
Modified Sat Mar 21 10:03:41 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Add a UDPClient.

Revision 105 - Directory Listing
Modified Sat Mar 21 07:06:34 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Add a comment.

Revision 104 - Directory Listing
Modified Sat Mar 21 06:05:27 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Trim elements from the tokens deque as they are processed, rather than
hand-coding offets.  This will make it easier to write helper rouintes
for extracting common configuration elements.

Revision 103 - Directory Listing
Modified Sat Mar 21 05:54:42 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Use a deque rather than a vector for tokens.

Revision 102 - Directory Listing
Modified Sat Mar 21 05:01:20 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Use slightly less obscure names for the various XCodec components.

Revision 101 - Directory Listing
Modified Sat Mar 21 02:12:20 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Quote paths which could include spaces.

Revision 100 - Directory Listing
Modified Fri Mar 20 10:54:09 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Update TODO and *really* fix clock_gettime detection.

Revision 99 - Directory Listing
Modified Fri Mar 20 10:46:45 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
o) Use our own clean target rather than hoping bsd.obj.mk will do it.
o) Define a no-action regress target for programs.

Revision 98 - Directory Listing
Modified Fri Mar 20 10:46:04 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Use the correct scheme to detect presence of clock_gettime(3).

XXX Does not try to detect available monotonic clock feature.

Revision 97 - Directory Listing
Modified Fri Mar 20 10:45:27 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
On Linux use librt for clock_gettime.

Revision 96 - Directory Listing
Modified Fri Mar 20 01:23:50 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Add a comment.

Revision 95 - Directory Listing
Modified Fri Mar 20 01:22:56 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
o) Use typedefs for offset-hash and offset-seg pairs rather than spelling
   out the full template every time.
o) Don't leak a refernece to a BufferSegment if there's a first-pass
   collision.
o) Remove some comments from the block before the main encode function
   which are being replaced by inline comments reflecting where work can
   be done or where it has been done.  Namely:
o) Comment where we should be (first) caching the database_ presense, so we
   avoid having to search the giant hash when we already know the results in
   a more local context.
o) Don't add redundant possible-declarations to the offset-hash map.  Also
   note where it is possible to do declarations in the first pass without
   resorting to the second pass.

The last item results in a 30% performance boost (statistically significant)
on random data and no statistically significant performance change on zero
data.

Revision 92 - Directory Listing
Modified Thu Mar 19 09:34:26 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Correctly escape short data.

Revision 91 - Directory Listing
Modified Thu Mar 19 08:47:55 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Remove hash printing code.

Revision 90 - Directory Listing
Modified Thu Mar 19 08:47:29 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Explicitly construct timeout_queue_.

Revision 89 - Directory Listing
Modified Thu Mar 19 04:58:49 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Use a typedef for a typedef rather than silly struct inheritance.

Revision 88 - Directory Listing
Modified Thu Mar 19 00:53:34 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Fix include guard spelling.

Revision 86 - Directory Listing
Modified Thu Mar 19 00:43:11 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Increase the backref window size by one.  This breaks interoperability.

Revision 85 - Directory Listing
Modified Thu Mar 19 00:27:24 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Remove dead include.

Revision 84 - Directory Listing
Modified Wed Mar 18 19:28:24 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
o) Fold XCodecSlice into XCodecEncoder.
o) Make XCodecEncoder::encode() the equivalent of XCodecSlice::process()
   followed by XCodecSlice::encode().  This gets rid of some intermediate
   data structure usage and makes our performance better than the old
   XCodecEncoder, in a single, reasonable function that is well-commented.

Revision 83 - Directory Listing
Modified Wed Mar 18 19:13:23 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
o) Reserve the correct amount for the data_ vector.
o) Get rid of the XCodecSlice::prefix_.

Revision 82 - Directory Listing
Modified Wed Mar 18 19:07:58 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
o) Don't make XCodecSlice create more XCodecSlices, there's no need.  We've
   now well-encapsulated the child data, so create an XCodecSlice::Data
   struct to reflect that, much like xcodec_slice.
o) Make the children just a vector of XCodecSlice::Datas.
o) Make declarations_ a std::set since the Data will have a BufferSegment.
o) Get rid of the type_ of XCodecSlice now.
o) Hash all input, not all but the last XCODEC_SEGMENT_LENGTH.
o) Since we're no longer recursive, we can make decisions when outputting the
   references in encode()...
o) Copy the declarations_ set to a local variable called 'need_declared' in
   encode so that we can output declarations when they are referenced, and be
   sure to output them only once.  This restores locality of reference.  It
   also puts us back in the situation where we wonder if we need to make a
   DECLARE/HASHREF pair, or if we can have DECLARE imply HASHREF.

Revision 81 - Directory Listing
Modified Wed Mar 18 19:03:06 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Print out the hashes in a mismatch.

Revision 80 - Directory Listing
Modified Wed Mar 18 18:13:03 2009 UTC (17 months, 2 weeks ago) by juli
Original Path: trunk
Choose the correct boundary for the 'base' variable.

Revision 79 - Directory Listing
Modified Wed Mar 18 10:20:05 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Update TODO.

Revision 78 - Directory Listing
Modified Wed Mar 18 10:19:20 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Don't include <deque> here.

Revision 77 - Directory Listing
Modified Wed Mar 18 10:18:32 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Double performance on random data by not using a map<> where we can ensure
ordering otherwise, and don't need random-access.  For now, use a deque.

Revision 76 - Directory Listing
Modified Wed Mar 18 09:53:43 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Fix some style bugs, mostly in comments.

Revision 75 - Directory Listing
Modified Wed Mar 18 09:48:06 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Get rid of wonky reordering, etc., and improve performance 4x.

Revision 74 - Directory Listing
Modified Wed Mar 18 09:27:42 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Write the new slice/encoder.

o) Track declarations needed by a slice and its children.
o) Look for redundant data using algorithms explained in the code.
o) Get rid of trying to slice the data up into smaller working units.  The
   only gains that gives are related to locality of reference, which is
   absolutely broken now, but likely to be fixed.

Performance is below that of the old encoder by a few times in the case of
data with a lot of redundancy, but it's probably fairly easy to fix that,
at least for some data sets.  Comments explain the plan-of-action and the
perceived problem space.

Random data performs about as well, it seems, in terms of streaming rate.

And even if performance is worse, that's to be expected since there's no
more crazy inlining, and probably a worthwhile trade-off since this version
of the encoder is humanly-comprehensible (and full of almost-useful
comments.)

Revision 73 - Directory Listing
Modified Wed Mar 18 09:13:50 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Do the right thing if a hash is in the window twice.

Revision 72 - Directory Listing
Modified Wed Mar 18 09:10:48 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Add a Buffer::moveout variant to yield the first BufferSegment.

Revision 71 - Directory Listing
Modified Tue Mar 17 22:19:00 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
o) Start work on a class that slices up input so it can be encoded optimally.
   For now it just escapes everything.
o) Rename XCODEC_CHUNK_LENGTH to XCODEC_SEGMENT_LENGTH.

Revision 70 - Directory Listing
Modified Tue Mar 17 09:28:00 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Use a dummy encoder that just escapes special characters.  The encoder is
going to be rewritten over the next few days and having a blank slate helps
me focus.

Revision 69 - Directory Listing
Modified Tue Mar 17 09:27:27 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Don't name unused argument.

Revision 68 - Directory Listing
Modified Tue Mar 17 03:46:18 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
If NDEBUG is not set, set -g.

Revision 67 - Directory Listing
Modified Sun Mar 15 06:48:13 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Add a desperately-desired item.

Revision 66 - Directory Listing
Modified Sun Mar 15 06:40:59 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Vastly improve the decoder despite keeping it mostly the same:
o) Be more tolerant of errors in the stream, and don't use exceptions
   to detect them.  Most importantly, don't crash because of them.
o) Keep track of the number of bytes in the input Buffer and use that
   to figure out how long to loop, etc., rather than looking into the
   Buffer all the time to figure out whether it's empty (and sometimes
   what its length is.)
o) Loop over un-escaped non-special data aggressively.  There's going to
   be some in every stream and we should process it well.
o) Don't leak segments in the event that some errors occur.

This translates into a slight performance increase (less slight with some
workloads), a huge reliability boost and a good chance to improve the
comments and clarity of the code.

Revision 65 - Directory Listing
Modified Sun Mar 15 06:33:52 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Add an option, -Q, to output nothing at all.

Revision 64 - Directory Listing
Modified Sun Mar 15 02:51:49 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
o) Don't use bsd.prog.mk where bsd.subdir.mk is desired.
o) Make TCPClient just give the user a Socket.  There's no reason they
   would want to have to go through some silly wrapper class.
o) Get rid of a warning in file.cc by returning NULL if HALT()<< for
   some incomprehensible reason doesn't return.  I hate GCC.
o) Make TCPClient::connect ASSERT that it can get a Socket rather than
   having it return NULL, since nobody checks its return value anyway.
o) Make program.mk not rely on bsd.prog.mk (just bsd.obj.mk.)
o) Crank up warnings a bit.

Revision 63 - Directory Listing
Modified Sun Mar 15 02:24:55 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Default to C99 compilation on systems that support CSTD.

Revision 62 - Directory Listing
Modified Sun Mar 15 02:24:37 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Default to kqueue(2) on FreeBSD and Darwin, poll(2) elsewhere.

Revision 61 - Directory Listing
Modified Sat Mar 14 05:05:01 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Document some thinking on a recent TODO item.

Revision 60 - Directory Listing
Modified Fri Mar 13 06:40:22 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Rename sets of listeners to be more appropriate.

Revision 59 - Directory Listing
Modified Fri Mar 13 06:32:04 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Use gethostbyname2.

Revision 58 - Directory Listing
Modified Thu Mar 12 23:40:57 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Don't COW a BufferSegment just because we'd like to append to it.
Leave it shared and create a new BufferSegment.

Revision 57 - Directory Listing
Modified Thu Mar 12 23:17:09 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Update TODO.

Revision 56 - Directory Listing
Modified Thu Mar 12 22:10:06 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
Start playing around with XML serialization of flow information.  This
will be useful when there's a socket front-end to the flow monitor.

Revision 55 - Directory Listing
Modified Thu Mar 12 04:09:25 2009 UTC (17 months, 3 weeks ago) by juli
Original Path: trunk
o) Make the Event callback system no longer require a void * user data argument.
   Instead, provide two callback classes, one with a user-specified argument, one
   with none and one with an argument type specified by a template parameter.
   For now the only consumer of user-specified arguments still uses a void *.

Revision 54 - Directory Listing
Modified Mon Mar 9 18:35:27 2009 UTC (17 months, 4 weeks ago) by juli
Original Path: trunk
o) If a segment is already in the database, use the copy of it from the database
   for the backref window, rather than keeping around a gratuitous copy.
o) Remove some stale comments.

Revision 53 - Directory Listing
Modified Sat Mar 7 07:48:12 2009 UTC (18 months ago) by juli
Original Path: trunk
Fix compilation on (stupid) systems where ntohs is a macro.

Revision 52 - Directory Listing
Modified Sat Mar 7 04:40:20 2009 UTC (18 months ago) by juli
Original Path: trunk
Remove unused include.

Revision 51 - Directory Listing
Modified Sat Mar 7 04:38:41 2009 UTC (18 months ago) by juli
Original Path: trunk
o) Make it possible to get the underlying Socket from a TCPClient.
o) Add getpeername() and getsockname() to Socket, returning strings.
o) Handle EOS in ProxySocksConnection for when a client goes away before
   it finishes authenticating and connecting outwards.
o) Add a FlowTable structure for registering flows.
o) Parameterize proxy listeners and such with a FlowTable.
o) Make ProxyClient manage flow table entries.
o) Pass Sockets around rather than Channels where we want to be able to
   do things like getpeername()/getsockname().
o) Fix WANProxyConfig log handle.
o) Create a FlowMonitor which reports on flow table entries.
o) Add flow-monitor and flow-table commands to start a FlowMonitor and to
   create FlowTables.
o) Make proxies specify which FlowTable their clients go into.

Revision 50 - Directory Listing
Modified Sat Mar 7 04:32:27 2009 UTC (18 months ago) by juli
Original Path: trunk
Temporarily back out r45.

Revision 49 - Directory Listing
Modified Fri Mar 6 10:05:53 2009 UTC (18 months ago) by juli
Original Path: trunk
Fix code to correctly handle priority masks.

Revision 48 - Directory Listing
Modified Fri Mar 6 08:05:45 2009 UTC (18 months ago) by juli
Original Path: trunk
Update TODO.

Revision 47 - Directory Listing
Modified Thu Mar 5 20:14:26 2009 UTC (18 months ago) by juli
Original Path: trunk
Use gettimeofday if clock_gettime / CLOCK_MONOTONIC is not available.

Revision 46 - Directory Listing
Modified Thu Mar 5 11:21:02 2009 UTC (18 months ago) by juli
Original Path: trunk
o) Consolidate all of the decoder funcitons into the decode() function for now.
o) Add some DEBUG if we decode only some data due to there not being enough buffered
   to decode the current command.
o) Use the existing seg if we're trying to enter a sum that already exists (and is
   correct) in the database.

XXX Really should rewrite encoder and decoder at some point.  Or at least make it so
    the decoder fails more gracefully.

XXX I did this work in search of an infinite loop due to a ESCAPE at end of input.
    How did it get there!?  Is there an encoder bug?  Could not reproduce.

Revision 45 - Directory Listing
Modified Thu Mar 5 11:16:45 2009 UTC (18 months ago) by juli
Original Path: trunk
Handle the decoder failing gracefully.

Revision 44 - Directory Listing
Modified Thu Mar 5 11:16:22 2009 UTC (18 months ago) by juli
Original Path: trunk
o) ASSERT that we're not trying to skip bytes on an empty Buffer.
o) Return immediately if we're just clearing a whole Buffer in trim/skip.

Revision 43 - Directory Listing
Modified Thu Mar 5 05:43:59 2009 UTC (18 months ago) by juli
Original Path: trunk
o) In polling code, if idle sleep using usleep/nanosleep if a wait is
   okay, rather than spinning.
o) Whitespace cleanup.
o) Add an example program for timeout usage.
o) Fix timeout interval calculation.
o) Fix NanoTime conditionals.

Revision 42 - Directory Listing
Modified Thu Mar 5 04:15:05 2009 UTC (18 months ago) by juli
Original Path: trunk
o) Use millisecond waits and timeouts.
o) Internally use a monotonic nanosecond clock for TimeoutQueues.

Revision 41 - Directory Listing
Modified Thu Mar 5 03:45:50 2009 UTC (18 months ago) by juli
Original Path: trunk
Add mistakenly-omitted Makefile.

Revision 40 - Directory Listing
Modified Thu Mar 5 02:39:39 2009 UTC (18 months ago) by juli
Original Path: trunk
o) Create Adler64 from Adler32.
o) Reimplement XCHash in terms of Adler64 with a custom functor to
   mix the internal state.

Revision 39 - Directory Listing
Modified Thu Mar 5 02:21:51 2009 UTC (18 months ago) by juli
Original Path: trunk
Add Adler32.

Revision 38 - Directory Listing
Modified Thu Mar 5 02:05:02 2009 UTC (18 months ago) by juli
Original Path: trunk
Close a race whereby:

	1) Channel X closes its file descriptor, N.
	2) An Event::Done for close is queued.
	3) A pending callback which creates a socket is called, which is given
	   file descriptor N, since it's free.  This would blow up since when
	   the channel attaches to the socket, N will be found to be in use by
	   the IOSystem.  Even if it didn't blow up:
	4) The Event::Done for the close is delivered, channel X detaches from
	   socket N and finds it is not closed anymore.

Do this by keying the IOSystem's Handle map with a std::pair of file descriptor
and Channel.  This may even allow for Channels to pass file descriptors to each
other if we get rid of the need to close before detach.

Revision 37 - Directory Listing
Modified Thu Mar 5 01:02:32 2009 UTC (18 months ago) by juli
Original Path: trunk
Comment a race I noticed last night.

Revision 36 - Directory Listing
Modified Wed Mar 4 09:13:44 2009 UTC (18 months ago) by juli
Original Path: trunk
Add a singleton IOSystem which manages IO requests (close/read/write.)  It may
at some point use lio_listio or similar to batch up IO requests.  This moves
some code out of FileDescriptor.  It also means we have to remove some
assertions from Socket and FileDescriptor since they no longer have visibility
into close() calls.

Revision 35 - Directory Listing
Modified Wed Mar 4 02:57:29 2009 UTC (18 months ago) by juli
Original Path: trunk
Add the alg hierarchy to the build.

Revision 34 - Directory Listing
Modified Wed Mar 4 00:24:54 2009 UTC (18 months ago) by juli
Original Path: trunk
Add an IO grouping TODO.

Revision 33 - Directory Listing
Modified Tue Mar 3 09:12:43 2009 UTC (18 months ago) by juli
Original Path: trunk
Get rid of the unspecified-amount overload/default for read().  Explicitly
specify 0 for the read amount if there is no preference.

Revision 32 - Directory Listing
Modified Tue Mar 3 08:11:47 2009 UTC (18 months ago) by juli
Original Path: trunk
Add a command line option to dump timer samples.

Revision 31 - Directory Listing
Modified Tue Mar 3 06:45:00 2009 UTC (18 months ago) by juli
Original Path: trunk
Move HashMatch out as XCodecEncoderMatch.

Revision 30 - Directory Listing
Modified Tue Mar 3 05:31:57 2009 UTC (18 months ago) by juli
Original Path: trunk
Add a microsecond-sampling mechanism and use it to instrument tack.

Revision 29 - Directory Listing
Modified Tue Mar 3 04:24:38 2009 UTC (18 months ago) by juli
Original Path: trunk
Don't implement the decoder in a header.  It doesn't make a big difference in the
performance and complicates many other things.

Revision 28 - Directory Listing
Modified Sat Feb 28 01:32:13 2009 UTC (18 months, 1 week ago) by juli
Original Path: trunk
Create a directory for implementations of miscellaneous and marginally-useful algorithms.

Revision 27 - Directory Listing
Modified Sun Feb 22 22:24:38 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Use a simpler log message format.

Revision 26 - Directory Listing
Modified Sun Feb 22 18:53:18 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Remove debugging messages that will certainly run before log masks could be
configured.

Revision 25 - Directory Listing
Modified Sun Feb 22 18:51:48 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Add a facility to control the verbosity of the log with regular expressions.

Revision 24 - Directory Listing
Modified Sun Feb 22 07:59:03 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Grrr.  Definition of timeval isn't very standard, so just use %u.%06u and
cast to unsigned.  That'll be good enough for a long time.  (No pun intended.)

Revision 23 - Directory Listing
Modified Sun Feb 22 07:55:25 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Use tcpdump-style timeval timestamps of all log entries.

Revision 20 - Directory Listing
Modified Sun Feb 22 01:27:54 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Bump copyright.

Revision 19 - Directory Listing
Modified Sun Feb 22 01:24:18 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
When drain() is called, return immediately if we're already performing a
callback to tell ProxyClient why we'd like to disappear.

Revision 18 - Directory Listing
Modified Sun Feb 22 01:19:57 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Add a drain function to ProxyPipe that tells it there will be no more data
inbound for it and that it should finish writing its data and then disappear.

Call this from ProxyClient whenever we get flow_complete and there is an
active pipe.

Revision 17 - Directory Listing
Modified Sun Feb 22 00:58:02 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Pass errno when accept fails.

Revision 16 - Directory Listing
Modified Sun Feb 22 00:48:33 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
o) Add some more assertions to ProxyPipe around errors and cancelling.
o) When ProxyClient cancels us before we've told it we're done or there's an
   error we must cancel any outstanding actions.

Revision 15 - Directory Listing
Modified Sun Feb 22 00:30:09 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Disable SIGPIPE to work around a deficiency in ProxyPipe/ProxyClient.

Revision 14 - Directory Listing
Modified Sun Feb 22 00:21:59 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
o) If an accept fails in one of the listeners, we should keep trying to accept.
   XXX Maybe we need to check the errno.
o) Switch to the new ProxyPipe code and rewrite the ProxyClient for it.
o) Update TODO to mention a race that could lead to SIGPIPE.

Revision 13 - Directory Listing
Modified Sat Feb 21 10:19:13 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Start work on a ProxyPipe class, not hooked up to anything, to replace the ugly
hack that is ProxyPeer.  ProxyClient will instead work in terms of a pair of
pipes, I believe.

Revision 12 - Directory Listing
Modified Sat Feb 21 03:41:19 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
State my resounding confidence in the proxy code.

Revision 11 - Directory Listing
Modified Sat Feb 21 03:29:26 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Lazily SOCKS5 support.

Revision 10 - Directory Listing
Modified Fri Feb 20 13:26:48 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Fix accidental boolean inversion.

Revision 9 - Directory Listing
Modified Fri Feb 20 13:22:07 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
As in the case of a missing hash, give a failure for duplicate hash.

Revision 8 - Directory Listing
Modified Fri Feb 20 13:19:30 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
o) Temporarily make XCodecDecocer::decode return a boolean, false if there's a
   fatal error.  (Namely, that a hash could not be resolved, in which case we
   reset the connection.)
o) Reset the connection if decode fails, per above.

Revision 7 - Directory Listing
Modified Fri Feb 20 13:11:22 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Change priority of some INFO messages to DEBUG.

Revision 6 - Directory Listing
Modified Fri Feb 20 12:52:57 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Do as the XXX suggests and avoid starting the local peer until the remote peer
is connected.  Otherwise we would blow up when close_peer() is called while we
are still connecting to the remote peer.  Now, maybe the right thing to do is to
fix that case to work properly so we can buffer lots of data from a client that
is starting out with a lot of data, but really that's an uncommon case so for
now do the easy thing.

Revision 5 - Directory Listing
Modified Fri Feb 20 12:36:32 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Update TODO to reflect things that came up working on the SOCKS4 mode.

Revision 4 - Directory Listing
Modified Fri Feb 20 12:35:58 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
o) Add a parameter to Channel::read to take an amount to read, defaulting to 0,
   which retains the old behavior of reading whatever amount is available.
o) Implement new Channel::read semantics in FileDescriptor::read.  Add buffering
   to FileDescriptor.
   Note that this tries to only read the amount specified by the caller, which
   may not be most efficient, but may provide the right behavior in terms of
   not acknowledging data?
o) Add ugly hackish redundant APIs to support numeric IP addresses in addition
   to strings.
o) Use said ugly hackish API to implement a simple SOCKS4 proxy.  It's a very
   conservative proxy that tries to be discreet (in that it doesn't send errors
   to clients sending random requests.)
   XXX SOCKS5 would be nice.
o) Modify the default config to show chaining through to the SOCKS4 proxy.

Revision 3 - Directory Listing
Modified Tue Feb 17 03:23:58 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Comment BufferSegment functions and add a missing check in
BufferSegment::prefix().

Revision 2 - Directory Listing
Modified Mon Feb 16 08:42:45 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Nuke the history file.  This may not be a great idea, but I think that now that
Subversion is available publically it's pretty redundant.

Revision 1 - Directory Listing
Added Mon Feb 16 08:26:47 2009 UTC (18 months, 2 weeks ago) by juli
Original Path: trunk
Initial import of public WANProxy codebase.

Based on r238 in the Marvelous Proof repository.

  ViewVC Help
Powered by ViewVC 1.2-dev