Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-19 Thread Stephen Deasey
On Wed, 2004-08-18 at 09:21, Jim Wilcoxson wrote:
 ...
   AOLserver is ideally suited to the majority of server tasks.  About the
   only shortcoming which comes to mind is that conn threads are required
   to do blocking writes.  But fixing that would be of benefit to the HTTP
   processing side too.
 
  So, we want reader threads and separate writer threads now, too?
  Exactly how many free-range threads do we want roaming the server
  prairie, here?

 You don't need reader threads and writer threads.  If input and output
 both use event-driven, non-blocking I/O, you can use one thread to do
 both, or one thread per CPU, like TUX.


You can't do non blocking I/O on a file descriptor backed by disk. Not
portably at least.  Calls like stat(2) to get the last mod time may also
block.

That's why I suggested a pool of writer threads.  TUX actually does
something very similar to handle potentially blocking disk I/O.


One of the biggest resource hogs is not the conn threads themselves but
the Tcl interps they drag round with them.  If you're interested in
cutting down on resource usage, you might want to take a look at this
RFE:

http://sourceforge.net/tracker/index.php?func=detailaid=1012103group_id=3152atid=353152


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-19 Thread Jim Wilcoxson
Yep, there are always cases where any given solution won't work well.
Using the HTTP protocol to download a a 600MB CD image or to implement
a movie server, is clearly different than average web usage.  To
display the _directory_ of the CD image, or download individual files,
output spooling would be a win, IMO.

For fastpath (static file serving), reading a file into a memory
buffer would seem to scale well for typical web size images: 250K or
less, especially considering that fastpath already uses a memory
cache.  I can see 3 scenarios:

1. File is small: put it in the cache, leave it there after spooling
2. File exceeds cache size limit, but is less than 1MB: put it in the
cache, delete it after spooling or make it expire very soon
3. File is huge: let the connection thread spool it, like it does now,
and don't spool it, or

My apologies for stomping on your topic.  I do think the ability to
handle other protocols is a good idea, esp for sites that need to
integrate user registration with a lot of different packages.

Jim


 I don't think the read-the-whole-file-in-the-conn-thread solution scales
 very well when faced with a directory of CD images or a distribution of
 Debian packages  :-)
...


 On Thu, 2004-08-19 at 06:14, Jim Wilcoxson wrote:
  I guess I was unclear in my earlier note:
 
  1. The HTTP driver thread reads all input for request, w/o blocking.
  My understanding is that this is now happening in AS 4 - great!
 
  2. A conn service thread creates the output, either by running a TCL
  script, executing fastpath to read a file into memory, etc.  This
  might do stats, file I/O, database I/O, etc., and may block.  The
  result of this thread is a memory buffer.
 
  3. The HTTP driver thread spools the memory buffer back to the client,
  w/o blocking.
 
  I wasn't suggesting that there should be no blocking in step 2, when
  the output is being created.  That's why multiple connection service
  threads are needed.  But the problem of a connection service thread
  being tied up while it spools a large page/image is eliminated.
 
  In the application of an image server, it would be nice if there could
  be one fastpath thread that did all non-blocking filesystem I/O
  (actually just reading is needed), or an asynchronous sendfile, but I
  agree with you that there are not good portable ways to do that yet.
 
  Jim
  ge. You can leave the Subject: field of your email blank.


 --
 AOLserver - http://www.aolserver.com/

 To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with 
 the
 body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field 
 of your email blank.



--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-19 Thread Dossy Shiobara
On 2004.08.19, Jim Wilcoxson [EMAIL PROTECTED] wrote:
 For fastpath (static file serving), reading a file into a memory
 buffer would seem to scale well for typical web size images: 250K or
 less, especially considering that fastpath already uses a memory
 cache.  I can see 3 scenarios:

 1. File is small: put it in the cache, leave it there after spooling
 2. File exceeds cache size limit, but is less than 1MB: put it in the
 cache, delete it after spooling or make it expire very soon
 3. File is huge: let the connection thread spool it, like it does now,
 and don't spool it, or

The Netscape Enterprise Server (NES) web server has a static file cache
that's tunable ... nfsc rings a bell.  You specify things like the
max number of entries in the cache, the byte size ranges that define
small, medium and large files, etc.

Could be an interesting idea to accelerate fastpath static content
serving from AOLserver.  Maybe.

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-18 Thread Bernd Eidenschink
   a. YES, I like AS to be more powerful multiprotocol
  server instead of being a powerful http-server only.
  And, I like proposal X better than Y because of Z.

I vote for (a).

I read both discussions from the sourceforge-links you provided and I
see no jealousness or vanity between the two patch-providers, so I'm
optimistic they will provide good information/arguments for a discussion
with a final vote.

Regards,
Bernd.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-18 Thread Robert Seeger
Given the current movement of this thread in the direction of You're
wrong... no, you are!!, I figured I'd toss something out in an attempt
to set it back on track a bit.

What, exactly, is the goal that we are trying to accomplish by applying
one of these patches? Can we put together a list of goals and a list of
constraints, and then analyze whether or not these patches meet those
requirements? If they don't, we can then go ahead and determine what is
missing, and if its something that can be added later, or it the
approach of the patch would preclude it.

My thoughts, which are only partially complete, would include:
Requirements:
- The ability to add handlers for additional protocols
   - The ability to do so easily, at a very high level, and
   - The ability to put forth more effort, but access things at a low
level (most likely for the purpose of performance)
- The high level API for writing a driver should allow the programmer to
write simple network code, and let all the logging, connection pooling,
thread pooling, etc. be handled automatically.
- The low level API should allow the programmer to handle every aspect
of the code independently, including handing off requests to different
threads, etc.
- The ability to write protocol handlers in Tcl, and move them to C if
needed for performance.

Constraints:
- Must be decoupled from the HTTP driver, so that that driver can be
changed or replaced at any time without impacting any added drivers

Notes:
- I'd like to see the Handler API be sufficient at the low level to
allow an HTTP handler to be written that is every bit as efficient and
speedy as what is being worked on for 4.1
- I'd like to see the high level API be easy enough to use that one
could register an echo server handler and write the code for it in a
dozen lines or so
- I'd like the progression from high level to low level be gradual, so
the programmer can address only those issues that pertain to his
specific protocol

Rob Seeger


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-18 Thread Zoran Vasiljevic
On Wednesday 18 August 2004 16:43, Robert Seeger wrote:
 Given the current movement of this thread in the direction of You're
 wrong... no, you are!!, I figured I'd toss something out in an attempt
 to set it back on track a bit.

 What, exactly, is the goal that we are trying to accomplish by applying
 one of these patches? Can we put together a list of goals and a list of
 constraints, and then analyze whether or not these patches meet those
 requirements? If they don't, we can then go ahead and determine what is
 missing, and if its something that can be added later, or it the
 approach of the patch would preclude it.

THANK YOU!

This is exactly what WAS the intention of the discussion.
The goal/intention in a nutshell:

  Allow AS to be a fast and scalable any_protocol instead
  of the http_only protocol server.

This should *not* harm AS main role of being the good http
server. It should *augment* its capabilities, rather.

If you look in the past:

In 3.x there was Win32 support.
In 4.0 it was taken out.
Luckily, Jamie Rassmusen, (thank's Jamie) went and got the
support back into the core.

In 3.x it was possible to serve alternative protocols.
In 4.0 the hook was taken out. Why?
Because AOL could not maintain it? As with Win32?
But there are people in the community who *have* the
knowledge and time to do it. And more importantly: they
need it, otherwise they would not go that far to write
complete ready-to-use code including sample usage and
post it to SF as RFE's.

Before doing anything else, I would kindly ask anybody
interested to go and *look* at the provided patches and
build his/her own oppinion.
By doing this, most of the questions will immediately
be answered, or for the ones which didn't, the patch
authors will be happy (I assume) to give any explanations
needed. They tried so, numerous times, as evident from
the responses so far.

I think accepting the idea is much more important
then the actual given implementation. I can't really
see how this might, even remotely, harm the project.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-18 Thread Wojciech Kocjan
Jim Wilcoxson wrote:
IMO it is not scalable to use connection servicing threads to spool
output when the size of the output exceeds the socket buffer capacity.
Doing I/O with non-blocking, event-driven threads also helps prevent
DOS attacks.  The trade-off is in memory usage: when a connection
service thread does an ns_return, and the output exceeds the socket
buffer size, you need to hang onto the buffer in memory somewhere
while it is spooled by the HTTP I/O driver.  The advantage is that the
connection service thread can be off handling another request, but
there is also a new resource to manage: spooled output buffers.
For returning files, you can always work the way [fcopy] does - leave
the fp open and when the socket is writable, read some more and send it.
This wouldn't be too resource consuming. I've never seen too many HTML
files above 100K (20s on a 57k6 modem anyone? :), usually the largest
ones are static files. On average, my dynamic HTML code is usually
20-30K at most.
The problem could be with people storing files as BLOBs, but then again
they have to be read into memory and sent back to the client now as
well... So this doesn't change much.
--
WK
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Bas Scheffers
Very interesting. After only reading your nutshell descriptions, to me
what would seem like a nice way of handling this is lightweight plumbing
in C and the bulk in Tcl. Example:

Create a socket driver that, on connection to it's IP/port, gets an
interpreter thread and in it runs the procedure configured for it, ie:

proc smtp {in out from_addr args} {smtp code}

When the proc exits, the connection closes and, just like HTTP, the
interpreter is cleaned up a bit and put back in the pool.

This would make it easy to implement any protocol you want, possibly using
expect. It could make nsd a very interesting core for building any
client/server apps.

Just my $0.02!

Bas.

Zoran Vasiljevic said:
 Hi!

 I would like to start a discussion which will eventually lead
 to one of the two proposals listed below (one from Vlad Seryakov and the
other from Stephen Deasey) included in the core-server
 distribution.

 Both proposals look promising and both allow us to add support
 for arbitrary protocols (pop, imap, ftp...) to the AS, augmeting the
existing (built-in) http protocol.

 Vlad Seryakov's patch can be found on:
 http://sourceforge.net/tracker/index.php?func=detailaid=726288group_id=3152atid=353152

 In a nutshell:
 Vlad's patch implements entirely new socket-level driver and sticks the
whole add-in functionality in the driver itself, effectively bypassing
the AS socket and/or ssl driver. It is minimaly invasive in terms of
core-server changes as it puts all of the new protocol parsing logic
into the driver itself.


 Stephen Deasey's patch can be found on:
 http://sourceforge.net/tracker/index.php?func=detailaid=973010group_id=3152atid=353152

 In a nutshell:
 Stephen's patch integrates into the AS by adding new API call
 Ns_RegisterParseProc() which allows module authors to register a proc
which will be called by the driver thread to parse the data from a
connection socket. This way a new protocol connect handling looks pretty
much like regular http. Hence it utilitzes all of the recent
optimizations in the core (read-aead  threads, async-reads) and runs
atop existing sock and ssl drivers.


 My personal opinion is that Stephen's patch is more versatile in the way
it integrates with other AS components. It brings more
 options to the protocol developer. It is relatively simple, not
 too invasive and I would vote we integrate this patch into the
 4.1+ dvelopment branch.

 So, all of you interested in extending AS to handle non-http
 protocols, please go, have a look and give some feedback.

 Thanks,
 Zoran


 --
 AOLserver - http://www.aolserver.com/

 To Remove yourself from this list, simply send an email to
 [EMAIL PROTECTED] with the
 body of SIGNOFF AOLSERVER in the email message. You can leave the
Subject: field of your email blank.



--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Andrew Piskorski
On Tue, Aug 17, 2004 at 10:32:56AM +0200, Zoran Vasiljevic wrote:

 Vlad's patch implements entirely new socket-level driver and sticks
 the whole add-in functionality in the driver itself, effectively

 Stephen's patch integrates into the AS by adding new API call
[...]
 from a connection socket. This way a new protocol connect handling
 looks pretty much like regular http. Hence it utilitzes all of the

Are there any types of protocols that Vlad's approach can handle while
Stephen's cannot?  E.g., protocols that look very different from HTTP?
If so, would it make sense to support BOTH methods in AOLserver?

Also, this is all still only for protocols on top of TCP/IP, right?
No support for UDP or any other sort sockets?

--
Andrew Piskorski [EMAIL PROTECTED]
http://www.piskorski.com/


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 11:59, Andrew Piskorski wrote:
 On Tue, Aug 17, 2004 at 10:32:56AM +0200, Zoran Vasiljevic wrote:

  Vlad's patch implements entirely new socket-level driver and sticks
  the whole add-in functionality in the driver itself, effectively

  Stephen's patch integrates into the AS by adding new API call
 [...]
  from a connection socket. This way a new protocol connect handling
  looks pretty much like regular http. Hence it utilitzes all of the

 Are there any types of protocols that Vlad's approach can handle while
 Stephen's cannot?  E.g., protocols that look very different from HTTP?
 If so, would it make sense to support BOTH methods in AOLserver?

Both approaches can handle arbitrary TCP protocols.


 Also, this is all still only for protocols on top of TCP/IP, right?
 No support for UDP or any other sort sockets?

Stepens patch sits atop of existing nssock driver hence it is
doing any protocols nssock can (TCP only for now). But there
is nothing which forbids you to make a UDP-level socket driver
and integrate it in the AS and then use Stephens patch to
add your own upper-level processing.

Vlad's patch does replace the nssock entirely, leaving you
to implement whatever you want in the driver. It has very
limited interaction to AS machinery really.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 11:28, Bas Scheffers wrote:
 Very interesting. After only reading your nutshell descriptions, to me
 what would seem like a nice way of handling this is lightweight plumbing
 in C and the bulk in Tcl. Example:

 Create a socket driver that, on connection to it's IP/port, gets an
 interpreter thread and in it runs the procedure configured for it, ie:

 proc smtp {in out from_addr args} {smtp code}

 When the proc exits, the connection closes and, just like HTTP, the
 interpreter is cleaned up a bit and put back in the pool.

 This would make it easy to implement any protocol you want, possibly using
 expect. It could make nsd a very interesting core for building any
 client/server apps.


This is basically what Vlad's patch is doing.
Please go ahead and checkout both proposals
to see real pros/cons of each of them.

Althought Vlad's patch is much simpler I somehow think
that Stephens one is cleaner and more powerful on the
long run.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Zoran Vasiljevic [EMAIL PROTECTED] wrote:

 So, all of you interested in extending AS to handle non-http
 protocols, please go, have a look and give some feedback.

Just the other night, I had the need to implement a non-HTTP server in
AOLserver in order to implement the TiVo beacon connection for the
Home Media Option (MHO) feature of the Series2 TiVo.  I thought about
both Vlad's and Stephen's approaches, and decided I'd rather stay
pure-Tcl instead.  Here's what I came up with:

proc tivo.init {} {
# ...some setting of nsv config vars here...

ns_thread begindetached tivo.beaconThread
}

proc tivo.beaconThread {} {
set address [nsv_get tivo address]
set beaconport [nsv_get tivo beaconport]
ns_log notice TiVo beacon listening on $address:$beaconport

set master [ns_socklisten $address $beaconport]
while {![nsv_get tivo shutdown]} {
foreach {rfd wfd} [ns_sockaccept $master] break
ns_chan create $rfd $rfd
ns_chan create $wfd $wfd
ns_thread begindetached [list tivo.beacon $rfd $wfd]
}
close $master
}

tivo.beacon {rfd wfd} {
ns_chan get $rfd
ns_chan get $wfd

# ... do actual beacon exchange ...

# connection must remain open, so we just poll until the remote
# side disconnects.
while {![nsv_get tivo shutdown]} {
set sel [ns_sockselect -timeout 2 $rfd {} {}]
if {[llength [lindex $sel 0]]} {
read $rfd 1
if {[fblocked $rfd] || [eof $rfd]} {
ns_log notice TiVo: Beacon disconnected.
break
}
}
}
close $rfd
close $wfd
}


The gist of this is that:

1. Can't use [ns_socklistencallback] since our connection handler keeps
   the connection open, and that would block the thread that executes
   the callback handler.

2. At server start-up, we create a thread to just accept connections
   which creates new threads to process those connections.

3. We use [ns_chan] to detach/attach Tcl channels to the socket fd's in
   order to pass them from the master thread to the slave threads.


So far, this has been working really well for me.  No modification to
the core involved, and it's implemented in very few LOC overall.  Using
the same pattern, I could easily implement an SMTP, IMAP, etc., server
in pure Tcl.  I'm not sure what the real performance difference there
would be compared to the two proposals that require C code changes in
the core: as long as the actual functionality is implemented in a Tcl
callback that gets invoked from the C code, the performance difference
is probably negligible.

On a side note: if you have a Series2 TiVo with Home Media Option, and
want to serve content to it from AOLserver ... I've got a module that
works (but is far from complete) that does it.  :-)

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 13:46, Dossy Shiobara wrote:
 Just the other night, I had the need to implement a non-HTTP server in
 AOLserver in order to implement the TiVo beacon connection for the
 Home Media Option (MHO) feature of the Series2 TiVo.  I thought about
 both Vlad's and Stephen's approaches, and decided I'd rather stay
 pure-Tcl instead.  Here's what I came up with:

Well, of course... If you only have a hammer than
everyting looks like a nail! I do not recall who
coined this phrase in the first place, but it can
be applied very good here.
The non-http functionality of the AS can be implemented with
Lego-pieces already there, no doubt about it. Works fine for
prototyping. Not more.
The thing is: you may couple tclhttpd with some db-libraries
plus Tcl threading extension and get more-less a fully functional,
performant multi-threaded webserver in no-time.
Yet, we still use AS. The question is: why?

Let other people speak-up and we'll see the consensus.
Then, we may act accordingly.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Zoran Vasiljevic [EMAIL PROTECTED] wrote:
 The thing is: you may couple tclhttpd with some db-libraries
 plus Tcl threading extension and get more-less a fully functional,
 performant multi-threaded webserver in no-time.

 Yet, we still use AS. The question is: why?

Unless that was meant to be a rhetorical question, I'd like to hear your
answer to the question.

Why do I use AOLserver?  Because, essentially, someone ELSE has coupled
the Tcl interpreter with an HTTP server, a DB API, Tcl threading
extensions, and has tested the whole combination to some degree -- so
that I didn't have to.  To do so myself, from scratch, would be a large
investment in time and effort which would unnecessarily duplicate the
efforts of others.

With the speed-ups in Tcl itself through optimizations, the performance
of pure Tcl solutions will gradually improve.  The ease of Tcl
development usually outweighs the performance gained by a C solution.

I see two classes of people using AOLserver for implementing non-HTTP
servers:

1) Low to medium performance requirements, short development timeline,
   need for rapid development, programmers with low to average technical
   expertise.

2) High performance requirements, highly skilled programmers, moderate
   development timeline, scalability a major concern.

For class #1, a pure Tcl solution should be more than adequate for even
the production implementation.

For class #2, you're arguing that these people can justify the
investment of writing and maintaining C code running in AOLserver?  I'm
arguing that with the advances in Tcl's performance today, it may be
unnecessary to implement as many things in C today as it used to be a
year or more ago.

In a nutshell: I am guessing that any project whose performance
requirements for a non-HTTP server are truly high enough to require a
C-based solution will not work even if shoehorned into AOLserver, even
with the two patches that have been proposed now.

I could very well be wrong.  If someone is interested in finding an
off-the-shelf, or implementing from scratch, a load generator for one of
these non-HTTP protocols (say, SMTP) ... I'd like to have a bake-off.
Implemented in pure Tcl, and implemented using one of the two proposed
patches.  Then, benchmark the two and see if there's a measurable
difference.

 Let other people speak-up and we'll see the consensus.
 Then, we may act accordingly.

Certainly.  My own input into the discussion shouldn't preclude others
from participating.  However, I tend to believe that my opinion also
counts and deserves to be voiced along with everyone else's for
consideration.

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Stephen Deasey
On Tue, 2004-08-17 at 03:59, Andrew Piskorski wrote:
 On Tue, Aug 17, 2004 at 10:32:56AM +0200, Zoran Vasiljevic wrote:

  Vlad's patch implements entirely new socket-level driver and sticks
  the whole add-in functionality in the driver itself, effectively

  Stephen's patch integrates into the AS by adding new API call
 [...]
  from a connection socket. This way a new protocol connect handling
  looks pretty much like regular http. Hence it utilitzes all of the

 Are there any types of protocols that Vlad's approach can handle while
 Stephen's cannot?  E.g., protocols that look very different from HTTP?
 If so, would it make sense to support BOTH methods in AOLserver?


Although the example protocol driver for POP3 generates what looks like
a (basic) HTTP request, there is no requirement to do so, it was just
convenient.

If you were handling some binary protocol, the minimum you would have to
do in the parse proc would be identify the end of the message, and set
the request line 'MYPROTO /'.  You would then register a proc for that
method and URL which calls Ns_ConnContent to get access to the payload
of the message.

The request line becomes a dummy, but it may still be useful.  For
example you can use it to force processing from one or another
connection pool.

There is the restriction at the moment that protocols which require
pipelining (sending message 2 before receiving the answer to message 1),
and by extension protocols which don't need an answer to all requests,
aren't supported.  I'd like to add that though, it's a requirement of
HTTP/1.1 and a handy speed boost.


 Also, this is all still only for protocols on top of TCP/IP, right?
 No support for UDP or any other sort sockets?


Vlad has submitted a patch which adds support for this to the binder:

  
http://sourceforge.net/tracker/index.php?func=detailaid=463625group_id=3152atid=353152

I think the most useful feature here would be unix domain sockets for
something like a fastcgi module.  This would be transparent to existing
socket drivers.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Stephen Deasey
On Tue, 2004-08-17 at 05:46, Dossy Shiobara wrote:

 So far, this has been working really well for me.  No modification to
 the core involved, and it's implemented in very few LOC overall.  Using
 the same pattern, I could easily implement an SMTP, IMAP, etc., server
 in pure Tcl.  I'm not sure what the real performance difference there
 would be compared to the two proposals that require C code changes in
 the core: as long as the actual functionality is implemented in a Tcl
 callback that gets invoked from the C code, the performance difference
 is probably negligible.


The performance difference would certainly be noticeable.

In your example code a new thread is spawned for each connection. This
can take a non trivial amount of time, especially if a new interp has to
be initialized.

Each of your connection threads and all it's resources are committed for
the life of the connection.  It will remain committed until the client
disconnects.

There are some functional differences too: no access logging; none of
the niceties of registered procs or filters; no caching of returned
files, etc. etc.

None of which matters for a toy like a Tivo server.  An SMTP or IMAP
server implemented like this wouldn't be worth the bother.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Stephen Deasey
On Tue, 2004-08-17 at 03:28, Bas Scheffers wrote:
 Very interesting. After only reading your nutshell descriptions, to me
 what would seem like a nice way of handling this is lightweight plumbing
 in C and the bulk in Tcl.


This is the essence of my proposed solution.  You are required to write
a parser in C, you can handle the processing in either C or Tcl in the
normal fashion by registering a proc.

Strictly speaking, you're not even required to parse the request in C.
The minimum requirement is that you identify the end of the request
(this would be a line end for an echo server request).  You can do the
actual parsing in Tcl within your registered proc; the content of the
entire request is available by calling [ns_conn content].


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 14:55, Dossy Shiobara wrote:
 Certainly.  My own input into the discussion shouldn't preclude others
 from participating.  However, I tend to believe that my opinion also
 counts and deserves to be voiced along with everyone else's for
 consideration.

Absolutely. Everybody's (that is, anybody actively involved
in AS project, I'd say) meaning counts.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Stephen Deasey
On Tue, 2004-08-17 at 06:55, Dossy Shiobara wrote:

 I could very well be wrong.  If someone is interested in finding an
 off-the-shelf, or implementing from scratch, a load generator for one of
 these non-HTTP protocols (say, SMTP) ... I'd like to have a bake-off.
 Implemented in pure Tcl, and implemented using one of the two proposed
 patches.  Then, benchmark the two and see if there's a measurable
 difference.


Alternatively, you could implement a web server using your tivo server
method and use apache bench to test it against stock AOLserver.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Vlad Seryakov
This is what i 've done with my first version of SMTP driver, i wrote it
in pure Tcl. Performance was terrible, the site was serving
thousands of incoming SMTP connections and it was very slow. Second
version was doing pretty same stuff but in C, i registered TCP callback
and create new thread for each new connection. Not much a difference.
Only after i started using AOLServer's thread pools and
connection manager, performance issues disappear. So if new protocol
does not serve thousands of connections, Tcl/TCP callback
solution works just fine.
Dossy Shiobara wrote:
On 2004.08.17, Zoran Vasiljevic [EMAIL PROTECTED] wrote:
So, all of you interested in extending AS to handle non-http
protocols, please go, have a look and give some feedback.

Just the other night, I had the need to implement a non-HTTP server in
AOLserver in order to implement the TiVo beacon connection for the
Home Media Option (MHO) feature of the Series2 TiVo.  I thought about
both Vlad's and Stephen's approaches, and decided I'd rather stay
pure-Tcl instead.  Here's what I came up with:
proc tivo.init {} {
# ...some setting of nsv config vars here...
ns_thread begindetached tivo.beaconThread
}
proc tivo.beaconThread {} {
set address [nsv_get tivo address]
set beaconport [nsv_get tivo beaconport]
ns_log notice TiVo beacon listening on $address:$beaconport
set master [ns_socklisten $address $beaconport]
while {![nsv_get tivo shutdown]} {
foreach {rfd wfd} [ns_sockaccept $master] break
ns_chan create $rfd $rfd
ns_chan create $wfd $wfd
ns_thread begindetached [list tivo.beacon $rfd $wfd]
}
close $master
}
tivo.beacon {rfd wfd} {
ns_chan get $rfd
ns_chan get $wfd
# ... do actual beacon exchange ...
# connection must remain open, so we just poll until the remote
# side disconnects.
while {![nsv_get tivo shutdown]} {
set sel [ns_sockselect -timeout 2 $rfd {} {}]
if {[llength [lindex $sel 0]]} {
read $rfd 1
if {[fblocked $rfd] || [eof $rfd]} {
ns_log notice TiVo: Beacon disconnected.
break
}
}
}
close $rfd
close $wfd
}
The gist of this is that:
1. Can't use [ns_socklistencallback] since our connection handler keeps
   the connection open, and that would block the thread that executes
   the callback handler.
2. At server start-up, we create a thread to just accept connections
   which creates new threads to process those connections.
3. We use [ns_chan] to detach/attach Tcl channels to the socket fd's in
   order to pass them from the master thread to the slave threads.
So far, this has been working really well for me.  No modification to
the core involved, and it's implemented in very few LOC overall.  Using
the same pattern, I could easily implement an SMTP, IMAP, etc., server
in pure Tcl.  I'm not sure what the real performance difference there
would be compared to the two proposals that require C code changes in
the core: as long as the actual functionality is implemented in a Tcl
callback that gets invoked from the C code, the performance difference
is probably negligible.
On a side note: if you have a Series2 TiVo with Home Media Option, and
want to serve content to it from AOLserver ... I've got a module that
works (but is far from complete) that does it.  :-)
-- Dossy
--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.
--
Vlad Seryakov
703 488-2173 office
[EMAIL PROTECTED]
http://www.crystalballinc.com/vlad/
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Stephen Deasey [EMAIL PROTECTED] wrote:
 The performance difference would certainly be noticeable.

As long as we're clear that we're BOTH speculating here, then I'm okay
with your statement.  If you're asserting this to be true, where's the
proof?

 In your example code a new thread is spawned for each connection. This
 can take a non trivial amount of time, especially if a new interp has to
 be initialized.

I could, inside 50 lines of code, implement my own thread pool in pure
Tcl.  I didn't need it, so I didn't bother.

 Each of your connection threads and all it's resources are committed for
 the life of the connection.  It will remain committed until the client
 disconnects.

This will be true regardless of the implementation (C vs. Tcl) as it's a
requirement of the TiVo beacon protocol -- clients maintain persistent
connections to the server.

 There are some functional differences too: no access logging; none of
 the niceties of registered procs or filters; no caching of returned
 files, etc. etc.

Access logging would be easy to implement if the nslog module was
extended to expose a Tcl command to generate log entries that nslog
would write.  Probably not a bad idea for an RFE.

Registered procs and filters are irrelevant for my specific case, but
again, an exposed Tcl command that allowed one to execute the procs or
filters registered for a user-provided URL would make this possible with
two lines of Tcl in my code.

Caching of returned files -- in my case, the responses are fully
dynamic.

My point is, I'm implementing a non-HTTP server.  Many of the features
of AOLserver that make it an excellent choice as an HTTP server are
irrelevant if you're not implementing an HTTP server.

 None of which matters for a toy like a Tivo server.  An SMTP or IMAP
 server implemented like this wouldn't be worth the bother.

I disagree.  SMTP and IMAP are toy servers with regard to complexity,
just as the TiVo server is.  They are all very simple protocols.  The
challenge is scalability -- the assumption here is that a pure Tcl
solution will not perform well enough to scale compared to the C
solution.  It's only an assumption.

My hunch is that empirical evidence will show that none of the
features of AOLserver will make the C solution perform exceptionally
better than a pure Tcl solution.  If you're going to implement in C for
performance, implement something tailored to solving the problem
specifically -- that will be the only way to really get the performance
required.

Of course, we're both only speculating here.

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Robert Seeger
Rather than implement thread pools in pure Tcl, why not just expose AS'
thread pool implementation at the Tcl level? That way, in the end,
there's only one code base to test and update.

Keep in mind, I'm not saying its better, I'm really just curious.

Rob Seeger

Dossy Shiobara wrote on 8/17/2004, 10:13 AM:

  On 2004.08.17, Vlad Seryakov [EMAIL PROTECTED] wrote:
   Only after i started using AOLServer's thread pools and
   connection manager, performance issues disappear.
 
  Perhaps I should share code to implement thread pools in pure Tcl?
  Do you still have your pure Tcl implementation of your SMTP server?
  Would you be interested in hooking a thread pool implementation up to it
  and see how it performs?
 
  -- Dossy
 
  --
  Dossy Shiobara   mail: [EMAIL PROTECTED]
  Panoptic Computer Network web: http://www.panoptic.com/
He realized the fastest way to change is to laugh at your own
  folly -- then you can let go and quickly move on. (p. 70)
 
 
  --
  AOLserver - http://www.aolserver.com/
 
  To Remove yourself from this list, simply send an email to
  [EMAIL PROTECTED] with the
  body of SIGNOFF AOLSERVER in the email message. You can leave the
  Subject: field of your email blank.
 


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 10:32, Zoran Vasiljevic wrote:
 I would like to start a discussion which will eventually lead
 to one of the two proposals listed below (one from Vlad Seryakov
 and the other from Stephen Deasey) included in the core-server
 distribution.


I anticipated that this one may evolve in large discussion.
Just to narrow down...

The proposal is *not* about if XYZ can be done in Tcl
and/or how much slower or faster this could be.
This is *not* the intention.

The intention is to augment, on the architecture-level,
the http-only protocol server, as AS server now is, to
a versatile protocol server, with the option to
plug_your_own minimal implementation and benefit from
all other stuff: logging, thread/conn pools, caches, etc.

This opens whole lotta application options and allows
people to build upon the great functionality already
in the server w/o re-inventing the wheel (in Tcl)
over and over again.

Hm?

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Vlad Seryakov
It is not thread pools by itself but more reusing existing thread pools.
If you have AOLServer thread pools and Tcl thread pools and if you have
100 connections always connected to the server and using SMTP and HTTP
(this is my case) both AOLServer pools and Tcl pools would
compete for the same resources.
I do not have Tcl implementation, it was more than 1 year ago and i did
not save old experimental code.
Dossy Shiobara wrote:
On 2004.08.17, Vlad Seryakov [EMAIL PROTECTED] wrote:
Only after i started using AOLServer's thread pools and
connection manager, performance issues disappear.

Perhaps I should share code to implement thread pools in pure Tcl?
Do you still have your pure Tcl implementation of your SMTP server?
Would you be interested in hooking a thread pool implementation up to it
and see how it performs?
-- Dossy
--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.
--
Vlad Seryakov
703 488-2173 office
[EMAIL PROTECTED]
http://www.crystalballinc.com/vlad/
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Don Baccus
On Tuesday 17 August 2004 10:17 am, Zoran Vasiljevic wrote:

   b. NO, I do not need AS doing anything else than http
  and am perfectly happy with status-quo now. Just
  forget the whole thing.

This is my vote.  Let's keep things simple and let's keep things working.  Why
is this even on the table when people using OpenSSL can't run AOLserver 4 in
a production environment?

--
Don Baccus
Portland, OR
http://donb.furfly.net, http://birdnotes.net, http://openacs.org


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 20:12, Don Baccus wrote:
 On Tuesday 17 August 2004 10:17 am, Zoran Vasiljevic wrote:

b. NO, I do not need AS doing anything else than http
   and am perfectly happy with status-quo now. Just
   forget the whole thing.

 This is my vote.  Let's keep things simple and let's keep things working.  Why
 is this even on the table when people using OpenSSL can't run AOLserver 4 in
 a production environment?


Thanks, Don.

Why is this on the table? Because there are people looking for
this kind of functionality and because two of them invested
great deal of time to get it working for themselves.  And, they
posted a RFE and are willing to share their work.

I can't say much about openssl problems, though.

Zoran

 --
 Don Baccus
 Portland, OR
 http://donb.furfly.net, http://birdnotes.net, http://openacs.org


 --
 AOLserver - http://www.aolserver.com/

 To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with 
 the
 body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field 
 of your email blank.



--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Don Baccus
On Tuesday 17 August 2004 10:59 am, Zoran Vasiljevic wrote:

 Why is this on the table? Because there are people looking for
 this kind of functionality and because two of them invested
 great deal of time to get it working for themselves.  And, they
 posted a RFE and are willing to share their work.

Fine.  But there's no reason to push forward on this immediately.  Resources
are finite, triage and prioritization are important, and we have definite
breakage in the current supposedly stable release - OpenSSL is crucial to any
commercial usage for e-commerce or any environment where sensitive
information is passed to or taken from the user's browser.  And, yes, I
realize OpenSSL isn't part of the AOLserver core proper, but it's importance
is such that it might as well be.

--
Don Baccus
Portland, OR
http://donb.furfly.net, http://birdnotes.net, http://openacs.org


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Nathan Folkman
[EMAIL PROTECTED] wrote:
On Tuesday 17 August 2004 10:59 am, Zoran Vasiljevic wrote:

Why is this on the table? Because there are people looking for
this kind of functionality and because two of them invested
great deal of time to get it working for themselves.  And, they
posted a RFE and are willing to share their work.

Fine.  But there's no reason to push forward on this immediately.  Resources
are finite, triage and prioritization are important, and we have definite
breakage in the current supposedly stable release - OpenSSL is crucial to any
commercial usage for e-commerce or any environment where sensitive
information is passed to or taken from the user's browser.  And, yes, I
realize OpenSSL isn't part of the AOLserver core proper, but it's importance
is such that it might as well be.

Have you looked at nsnss? ;-) Some highlights from the Changelog:
$Header: /cvsroot/aolserver/nsnss/README,v 1.1.1.1 2004/04/12 13:46:25
rcrittenden0569 Exp $
SSLv2, SSLv3, TLSv1 Module
--
This module requires NSPR v4.4.1 and NSS v3.9 or higher. It will work with
lower versions of NSS and NSPR but some tweaks may be required.
Feature Highlights
--
* Open Source software (AOLserver Public License or GPL)
* Useable for both commercial and non-commercial use
* 128-bit strong cryptography world-wide
* Support for SSLv2, SSLv3 and TLSv1 protocols
* Support for both RSA and Diffie-Hellman ciphers
* FIPS-certified SSL implementation
* Support for client certificate verification
* Clean, reviewable ANSI C source code
--
Don Baccus
Portland, OR
http://donb.furfly.net, http://birdnotes.net, http://openacs.org
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Don Baccus [EMAIL PROTECTED] wrote:
 And, yes, I realize OpenSSL isn't part of the AOLserver core proper,
 but it's importance is such that it might as well be.

I've been trying, with little luck, to reproduce the problems people
have been seeing with nsopenssl.

Janine has offered to help, but cannot provide access to her production
environments where the problem is occurring.

If anyone can even posit hypothesis as to what's causing the error, I'd
be more than happy to investigate.  Within AOL, we use nsopenssl 3 beta
and I haven't heard nary a peep from the Ops folks that they're seeing
the same problems that are being observed in the OSS community.

I'm beginning to suspect a configuration-related issue ...

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Zoran Vasiljevic
On Tuesday 17 August 2004 20:55, Don Baccus wrote:
 Fine.  But there's no reason to push forward on this immediately.  Resources
 are finite, triage and prioritization are important

Of course. There is no need to push this. It is, if at all, going
to be the part of the development branch for 4.1 or some future
release.

BTW, the job is already done by Vlad/Stephen. There is
no additional work to be done by anybody, except doing the
merge in the CVS. People not interested in, or having no need
for it, will see no difference in speed or stability of the
server.

It is a clear win-win situation.

Zoran


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Brett Schwarz
I definitely vote for a). I think AS has a very
powerful framework that can be used outside of http.

--- Zoran Vasiljevic [EMAIL PROTECTED] wrote:

 On Tuesday 17 August 2004 10:32, Zoran Vasiljevic
 wrote:
  Hi!
 
  I would like to start a discussion which will
 eventually lead
  to one of the two proposals listed below (one from
 Vlad Seryakov
  and the other from Stephen Deasey) included in the
 core-server
  distribution.

 Eh... wrong turn again...
 By start a discussion, I really expected the
 people to
 respond with:

   a. YES, I like AS to be more powerful
 multiprotocol
  server instead of being a powerful http-server
 only.
  And, I like proposal X better than Y because of
 Z.

   b. NO, I do not need AS doing anything else than
 http
  and am perfectly happy with status-quo now.
 Just
  forget the whole thing.

 I apologize for not being more precise.

 If a. turns out to be everbody's darling, then there
 are
 two excellent proposals for making this work. If
 somebody
 has a better solution, lets see this as RFE. Then,
 get a
 couple of (knowledgeable) people vote in democratic
 way
 about what's the better solution. I think there is a
 AOLSERVER-DEVEL (or such) list where deeper
 technical
 issues can be discussed in a smaller audience.

 If b. well, than it is clear. We just leave it
 as-is.

 Can we agree on this?

 Zoran


 --
 AOLserver - http://www.aolserver.com/

 To Remove yourself from this list, simply send an
 email to [EMAIL PROTECTED] with the
 body of SIGNOFF AOLSERVER in the email message.
 You can leave the Subject: field of your email
 blank.



--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Andrew Piskorski
On Tue, Aug 17, 2004 at 08:55:26AM -0400, Dossy Shiobara wrote:

 I see two classes of people using AOLserver for implementing non-HTTP
 servers:

 1) Low to medium performance requirements, short development timeline,
need for rapid development, programmers with low to average technical
expertise.

 2) High performance requirements, highly skilled programmers, moderate
development timeline, scalability a major concern.

Dossy, this is all very interesting, but it also seems to have rather
little to do with Zoran's original topic.

Let's be blunt here:  We have two proposed patches on the table for
enabling AOLserver to be a multi-protocol rather than HTTP-only
server.  The question at hand is should either of these patches be
applied, and if so, which one.

So, Dossy, are you SERIOUSLY arguing that the correct answer is, No,
don't apply EITHER patch, because you can always roll your own from
scratch in pure Tcl.?  All your discussion so far can be easily taken
to imply that, but I've honestly no idea whether that's your position
or not.  Please clarify.

Finally, to head off the next and obvious question: No, don't apply
EITHER patch, because you can always roll your own from scratch in
plain Tcl, is, IMNSHO, an totally bogus, unnacceptable argument.
Yes, perhaps you COULD implement XYZ in Tcl only without any further
integration into the existing AOLserver C facilities, and MAYBE it
might even be almost as fast as doing it in C - it could even be true.
But it's also almost COMPLETELY irrelevent to the question of, Should
we apply one of these two patches.  Here's why:

We already know that SOME hard-core AOLserver users find extended
multi-protocol support in AOLserver, implemented in C, to be very
useful.  We know this because they went to the trouble to implement it
themselves, are using it on their production sites, have discussed how
it's important to them many times on this list, and have posted
patches for public review and adoption.  There is *NO* debate about,
Can this feature be significantly useful to at least some people?
We already know beyond any reasonable doubt that the answer to that
is, Yes!.

Therefore, fairly arguing that, No, we should NOT apply EITHER of
these two multi-protocol patches, BECAUSE... requires that the
BECAUSE part suggest real, actual NEGATIVES to these patches, and at
least the possibility that these negatives may outway the positives.

For example, arguments along the lines of:
- The patches will make the code more complicated, uglier, bug prone,
  or harder to maintain.
- We don't and won't have to do it, and we won't anytime soon, either.

In short, it makes no sense to argue that, There is no value to these
patches.  We already knows that they DO have value.  What we may not
know yet is, how much value, what might the costs and risks be, is the
value worth those risks, and finally, what should we do about it.

What, if any, is the risk of applying these patches?  Since they are
each in production use on at least one site, and have aleady been
independently reviewed by Zoran, my initial assumption is that the
risk is pretty low.  So far I've seen nothing to suggest otherwise.

Flexibility, power, and options are good.  Giving people the option to
code non-HTTP servers in C using AOLserver is GOOD.  If people see
real problems in these patches to do that, yes please, speak up, we
need to hear about it!  But the AOLserver project also has a LONG
history of opposing useful, important patches (even bug fixes!) from
outside developers, often for no apparent reason at all, and that sort
of not invented here syndrome gets awfully tiresome.

Please note, I'm NOT claiming that's what's going on here, right now.
I don't really think it is actually, at least not yet.  I just want to
do my little bit to help keep us from heading off down that unpleasant
road once again...

--
Andrew Piskorski [EMAIL PROTECTED]
http://www.piskorski.com/


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Andrew Piskorski
On Tue, Aug 17, 2004 at 07:17:52PM +0200, Zoran Vasiljevic wrote:

   a. YES, I like AS to be more powerful multiprotocol
  server instead of being a powerful http-server only.
  And, I like proposal X better than Y because of Z.

I'd like to hear more discussion first, but so far my vote is a.

This is a potentially very powerful and useful feature.  I don't have
any specific need for it right now, but I can easily imagine it being
exactly the right tool for some future project.

From Zoran's description, Stephen Deasey's patch sounds the better of
the two, but I haven't looked at any of this code myself at all, so
what that really boils down to is, I defer to Zoran's judgement.

--
Andrew Piskorski [EMAIL PROTECTED]
http://www.piskorski.com/


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
IMO, this is all BS. I don't mean any disrespect, but if I wanted
 a mail server, I'd install a mail server. I don't go on the sendmail
 list screaming for it to support http :)

Let me rephrase what I think Donald was trying to say, but without the
edgy-ness:

If we could focus our energies on making AOLserver a better HTTP
server, that would be really cool.

It's the needs of the many vs needs of the few issue -- yes, making
AOLserver a better non-HTTP server serves the needs of the few, but if
we're going to spend time and energy, why can't we do it to make
AOLserver a better HTTP server than it already is?  That would benefit
far more people who already use AOLserver ...

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Don Baccus
On Tuesday 17 August 2004 11:51 am, Dossy Shiobara wrote:

 Janine has offered to help, but cannot provide access to her production
 environments where the problem is occurring.

Sloan's going to try to reproduce it in the next week or two, at which time I
plan to dig around in gdb ...

--
Don Baccus
Portland, OR
http://donb.furfly.net, http://birdnotes.net, http://openacs.org


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Andrew Piskorski [EMAIL PROTECTED] wrote:

 Therefore, fairly arguing that, No, we should NOT apply EITHER of
 these two multi-protocol patches, BECAUSE... requires that the
 BECAUSE part suggest real, actual NEGATIVES to these patches, and at
 least the possibility that these negatives may outway the positives.

No, we should NOT apply EITHER of these two multi-protocol patches,

BECAUSE ... the entire driver model is being reworked for 4.1.  Can
the same functionality be implemented against 4.1 without getting in
the way of the rest of the code?

BECAUSE ... while both patches make AOLserver do what the original
authors intended, I personally don't think the solution is right.
It may work, but they're both kludges.  I personally don't believe
that AOLserver's connection processing model (in either 4.0 or 4.1)
is good for a long-lived TCP connection, but rather geared toward
short-lived TCP connections with one request and one response, such
as with HTTP.

 In short, it makes no sense to argue that, There is no value to these
 patches.  We already knows that they DO have value.

I agree, there is value in the ability to implement high-performance
non-HTTP servers within AOLserver.  My personal feelings are that
neither of the two proposed patches do it right.  They both piggy-back
on the existing HTTP driver, which is bad because it makes the
functionality fragile: significant changes or optimizations in the HTTP
driver could totally break non-HTTP servers, leaving anyone relying on
those features out of an upgrade path.

I don't want to recommend people build non-HTTP servers on AOLserver if
they won't be properly supported and feature-complete in future
versions.  I'd rather say it's unsupported for NOW than to say you're
supported, but the feature might vaporize in the future if it's
inconvenient to support.

We already have people who refuse to upgrade from AS 2.x and 3.x and I'm
working hard to correct that.  I'm pushing hard to get features back
into 4.1 to enable folks to upgrade to it from older AOLserver versions.

I don't want to see a patch go in now that, in 6 months to a year, cause
people to say I can't upgrade to the latest release because you broke
non-HTTP server capability and I rely on it in a production environment,
and ..., and ..., and ... -- can you sympathize with me?

 What, if any, is the risk of applying these patches?  Since they are
 each in production use on at least one site, and have aleady been
 independently reviewed by Zoran, my initial assumption is that the
 risk is pretty low.  So far I've seen nothing to suggest otherwise.

I hope I've given at least one rational reason why I think applying
these patches, in their current form, isn't a great idea.  I might be
alone here, but that's okay.

To summarize: I think the feature being requested is useful and
important, but I don't think either of the two patches submitted
implement the functionality in such a way that we won't regret it in a
future release.

I'm glad that people have taken it upon themselves to implement this
functionality for their own projects and have contributed the code back.
It's a great proof-of-concept that it CAN be done.  However, I think if
we focused on how to best implement this functionality and code that,
we would be much better off.  Think: if Jim Davidson hadn't put nearly
as much thought into the design of AOLserver, would it be as good of an
HTTP server as it is today?  Shouldn't we put a similar level of study
into the design of this change rather than just hacking it in because
it's easy to do this way ...?

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Jim Wilcoxson
From my point of view, focusing on protocols is not necessarily the
only reason to want thread pools.  I'm not all that familiar with AS 4
yet, so maybe I'm being dense here... keep that in mind. :)

The reason thread pools would be interesting to me personally is to be
able to control quality of service better.  For example, I may want a
pool of 5 threads to handle search engine spidering requests, and a
pool of 5 threads to handle PHP requests, 5 threads to handle a
particular application that uses a different database, 5 threads to
handle CGI requests, 10 threads to TCL requests, 5 to handle image
serving (fastpath), 5 to handle all other requests.  I'd want to
dispatch the requests to the various thread pools myself, using TCL
code.  The protocol and communication method (TCP vs UDP) part are
all the same here - HTTP.

Perhaps this can all be done today with AS 4 using multiple IP
addresses - I dunno.  However, sometimes it would be useful to have
the pool functionality with one IP address.  If a search engine
decides to aggressively index your site, they have to do it on the
main IP address.  Being able to give them a different class of
service, ie, a different thread pool, would be useful.

We've already done a similar thing, by setting up multiple AS
instances.  But it would have been easier in many cases to set it up
with thread pools.  Much less code on our end to change.

A way to accomplish the same thing today is by putting an intelligent
switch/cache/proxy device in front of multiple servers, and having it
route certain kinds of requests to certain servers.  The problem from
my point of view is:

- the switch is another device to manage
- it's an extra $5000+
- it's often a proprietary solution
- if you look at client IP addresses, you have IP address issues to
deal with, or have to set up some fancy routing, or have to modify
your code to get the true peer address from a made-up header
- you have to learn how to use the device's routing rules instead
of making rules yourself, with TCL
- hit logging will probably work differently; another difference
to handle

Another advantage to using thread pools in this application is that it
may help a site be less vulnerable to DOS attacks.  If a site is
running 3rd party bulletin board software for example, and someone
decides to run an attack against it, it may still kill that the board
service/thread pool, but the other services running on the same server
instance would not be unaffected.  Without this partitioning, the
attack might use all of the threads and kill the site.

Maybe the thread pools could also have priorities too.  So I could
make dispatching decisions based on the current request load, like,
If there are more than 5 threads active in the main pool, hold off
executing any new requests in the bulletin board pool, ie, queue
the request, but don't let it execute.  In an ideal world, there
would always be enough resource to do everything, but in the real
world, there are sometimes momentary resource shortages that cause
things to get slow.  If something is going to be slow, I'd rather
it be a non-essential service like a bulletin board rather than
the threads generating our main pages.

Is this something critical I can't live without? No.  But it seems
useful.

Jim


 I definitely vote for a). I think AS has a very
 powerful framework that can be used outside of http.

 --- Zoran Vasiljevic [EMAIL PROTECTED] wrote:

  On Tuesday 17 August 2004 10:32, Zoran Vasiljevic
  wrote:
   Hi!
  
   I would like to start a discussion which will
  eventually lead
   to one of the two proposals listed below (one from
  Vlad Seryakov
   and the other from Stephen Deasey) included in the
  core-server
   distribution.
 
  Eh... wrong turn again...
  By start a discussion, I really expected the
  people to
  respond with:
 
a. YES, I like AS to be more powerful
  multiprotocol
   server instead of being a powerful http-server
  only.
   And, I like proposal X better than Y because of
  Z.
 
b. NO, I do not need AS doing anything else than
  http
   and am perfectly happy with status-quo now.
  Just
   forget the whole thing.
 
  I apologize for not being more precise.
 
  If a. turns out to be everbody's darling, then there
  are
  two excellent proposals for making this work. If
  somebody
  has a better solution, lets see this as RFE. Then,
  get a
  couple of (knowledgeable) people vote in democratic
  way
  about what's the better solution. I think there is a
  AOLSERVER-DEVEL (or such) list where deeper
  technical
  issues can be discussed in a smaller audience.
 
  If b. well, than it is clear. We just leave it
  as-is.
 
  Can we agree on this?
 
  Zoran
 
 
  --
  AOLserver - http://www.aolserver.com/
 
  To Remove yourself from this list, simply send an
  email to [EMAIL PROTECTED] with the
  body of SIGNOFF AOLSERVER in the email message.
  You can leave the Subject: field of your email
  blank.
 


 --
 AOLserver - 

Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread dhogaza
 On Tue, Aug 17, 2004 at 08:55:26AM -0400, Dossy Shiobara wrote:

 For example, arguments along the lines of:
 - The patches will make the code more complicated, uglier, bug prone,
   or harder to maintain.

Three of the four points above are a given.

1. The code will be more complicated.
2. More code and new features increase the probability of bugs.
3. Yes, it will be harder to maintain, because the new features will need
   to be tested for each release.

I have no idea if the code's ugly or not.

 In short, it makes no sense to argue that, There is no value to these
 patches.  We already knows that they DO have value.

Every proposed patch has value by your definition, since you argued the
proof of value is that someone wrote the code that goes into the patch.

This doesn't mean that every patch implements a good idea, though.

 Flexibility, power, and options are good.

This is commonly known as the MicroSoft definition of software quality.

It's all about features, not about the appropriateness of implementing
those features in a particular piece of software.

 Giving people the option to
 code non-HTTP servers in C using AOLserver is GOOD.

Why?  All I want is a simple, reliable, efficient web server that provides
me with a nice DB interface and a built-in interpretive language.


Is also good to give people the option to do their word processing in
AOLserver?  If not, why not, and where's the intrinsic difference in
goodness between one case and the other?

 If people see
 real problems in these patches to do that, yes please, speak up, we
 need to hear about it!  But the AOLserver project also has a LONG
 history of opposing useful, important patches (even bug fixes!) from
 outside developers, often for no apparent reason at all, and that sort
 of not invented here syndrome gets awfully tiresome.

Where's the NIH syndrome here?  This represents a major change in
philosophy, that AOLserver is no longer a webserver but something entirely
different.  Has nothing to do with who invented the patch.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Janine Sisk
On Tuesday 17 August 2004 11:51 am, Dossy Shiobara wrote:
Janine has offered to help, but cannot provide access to her production
environments where the problem is occurring.
Actually I can, but what I can't do is put AOLserver 4 + nsopenssl beta
21 back into production.  Right now I am running 3.3+ad13 all around,
with one of the staging sites on 3.5.11 to see if it will work ok.  I
don't think being able to log into this box now is going to help you
much with the nsopenssl problem.
I'll post an update later on the random hang problem I've been having
with my current setup, the one that prompted my attempt to upgrade in
the first place.
janine
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Vlad Seryakov
Time and energy have been already spent by implementing/testing those
patches, why are we circling around that somebody need
to spend efforts to make AOLServer worse HTTP server and better non-HTTP
server. Nobody needs to do anything, AOLServer
still remains http server, those patches do not even change HTTP
processing a bit, they only add additional functionality
which co-exists with existing infrastructure making AOLserver more
versatile environment.
Regarding sendmail list:
We use AOLserver with SMTP in front of sendmail and postfix, as MX
server,  and same aolserver provides us with nice Web interface which
simplifies administration to just one server and even that
administration goes through Web interface. It is a lot of man-hours for
sendmail
administrators to achive same level functionality with
sendmail/apache-or-another-web-server.
I do not vote but regardless of the decision i will maintain my
multi-protocol version of AOLServer4 (i have many production servers).
Dossy Shiobara wrote:
On 2004.08.17, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
  IMO, this is all BS. I don't mean any disrespect, but if I wanted
a mail server, I'd install a mail server. I don't go on the sendmail
list screaming for it to support http :)

Let me rephrase what I think Donald was trying to say, but without the
edgy-ness:
If we could focus our energies on making AOLserver a better HTTP
server, that would be really cool.
It's the needs of the many vs needs of the few issue -- yes, making
AOLserver a better non-HTTP server serves the needs of the few, but if
we're going to spend time and energy, why can't we do it to make
AOLserver a better HTTP server than it already is?  That would benefit
far more people who already use AOLserver ...
-- Dossy
--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.
--
Vlad Seryakov
703 488-2173 office
[EMAIL PROTECTED]
http://www.crystalballinc.com/vlad/
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Robert Seeger
Ah, but therein lies what I think Dossy takes issue with. No, they don't
change the http processing. But... if the http processing changes, the
patches can break. I think the general idea Dossy is getting at is to
think about a way to implement the functionality such that it is not
tied in to the http processing/handler. (Well, that and well thought
out, extendable, powerful, yadda yadda yadda ;)

Rob Seeger

Vlad Seryakov wrote on 8/17/2004, 4:45 PM:

  Nobody needs to do anything, AOLServer
  still remains http server, those patches do not even change HTTP
  processing a bit, they only add additional functionality
  which co-exists with existing infrastructure making AOLserver more
  versatile environment.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Vlad Seryakov
Of course they are kludges, AOLServer and 4.x versions in particular,
designed to be HTTP only.
Current AOLServer driver model considers HTTP protocol only and is being
optimized to support
HTTP or HTTP-like protocols only. I doubt AOL will ever change the whole
driver model again to
un-HTTP it, i.e. making driver architecture multi-protocol but less
HTTP-efficient.
That's why, at least my patch, does not change HTTP driver at all, it
just makes a little short-cut to
stop HTTP processing and passing socket to other protocol handler. It
will work with future versions,
it works with 4.1 as well. It is similar to existing TCl callback
approach, but uses connection pooling,
without pre-filters, they are HTTP specific.
As for breaking if driver changes, haven't it happened with versions
3.1, 3.5, 4.0, 4.1.
With every version we have bunch of things not working, openssl comes to
mind,
modules and drivers API changed. So this argument do not hold water.
Dossy Shiobara wrote:
On 2004.08.17, Andrew Piskorski [EMAIL PROTECTED] wrote:
Therefore, fairly arguing that, No, we should NOT apply EITHER of
these two multi-protocol patches, BECAUSE... requires that the
BECAUSE part suggest real, actual NEGATIVES to these patches, and at
least the possibility that these negatives may outway the positives.

No, we should NOT apply EITHER of these two multi-protocol patches,
BECAUSE ... the entire driver model is being reworked for 4.1.  Can
the same functionality be implemented against 4.1 without getting in
the way of the rest of the code?
BECAUSE ... while both patches make AOLserver do what the original
authors intended, I personally don't think the solution is right.
It may work, but they're both kludges.  I personally don't believe
that AOLserver's connection processing model (in either 4.0 or 4.1)
is good for a long-lived TCP connection, but rather geared toward
short-lived TCP connections with one request and one response, such
as with HTTP.

In short, it makes no sense to argue that, There is no value to these
patches.  We already knows that they DO have value.

I agree, there is value in the ability to implement high-performance
non-HTTP servers within AOLserver.  My personal feelings are that
neither of the two proposed patches do it right.  They both piggy-back
on the existing HTTP driver, which is bad because it makes the
functionality fragile: significant changes or optimizations in the HTTP
driver could totally break non-HTTP servers, leaving anyone relying on
those features out of an upgrade path.
I don't want to recommend people build non-HTTP servers on AOLserver if
they won't be properly supported and feature-complete in future
versions.  I'd rather say it's unsupported for NOW than to say you're
supported, but the feature might vaporize in the future if it's
inconvenient to support.
We already have people who refuse to upgrade from AS 2.x and 3.x and I'm
working hard to correct that.  I'm pushing hard to get features back
into 4.1 to enable folks to upgrade to it from older AOLserver versions.
I don't want to see a patch go in now that, in 6 months to a year, cause
people to say I can't upgrade to the latest release because you broke
non-HTTP server capability and I rely on it in a production environment,
and ..., and ..., and ... -- can you sympathize with me?

What, if any, is the risk of applying these patches?  Since they are
each in production use on at least one site, and have aleady been
independently reviewed by Zoran, my initial assumption is that the
risk is pretty low.  So far I've seen nothing to suggest otherwise.

I hope I've given at least one rational reason why I think applying
these patches, in their current form, isn't a great idea.  I might be
alone here, but that's okay.
To summarize: I think the feature being requested is useful and
important, but I don't think either of the two patches submitted
implement the functionality in such a way that we won't regret it in a
future release.
I'm glad that people have taken it upon themselves to implement this
functionality for their own projects and have contributed the code back.
It's a great proof-of-concept that it CAN be done.  However, I think if
we focused on how to best implement this functionality and code that,
we would be much better off.  Think: if Jim Davidson hadn't put nearly
as much thought into the design of AOLserver, would it be as good of an
HTTP server as it is today?  Shouldn't we put a similar level of study
into the design of this change rather than just hacking it in because
it's easy to do this way ...?
-- Dossy
--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] 

Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Robert Seeger
Just because things have gone wrong in the past, does not mean we should
  not work to avoid it in the future.

Rob Seeger

Vlad Seryakov wrote on 8/17/2004, 4:59 PM:

  As for breaking if driver changes, haven't it happened with versions
  3.1, 3.5, 4.0, 4.1.
  With every version we have bunch of things not working, openssl comes to
  mind,
  modules and drivers API changed. So this argument do not hold water.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread dhogaza
 Time and energy have been already spent by implementing/testing those
 patches

Arguments of this sort apply to EVERY patch and have nothing to do with
whether or not it's a good idea to apply them to the code.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread dhogaza
 The reason thread pools would be interesting to me personally is to be
 able to control quality of service better.  For example, I may want a
 pool of 5 threads to handle search engine spidering requests, and a
 pool of 5 threads to handle PHP requests, 5 threads to handle a
 particular application that uses a different database, 5 threads to
 handle CGI requests, 10 threads to TCL requests, 5 to handle image
 serving (fastpath), 5 to handle all other requests.  I'd want to
 dispatch the requests to the various thread pools myself, using TCL
 code.  The protocol and communication method (TCP vs UDP) part are
 all the same here - HTTP.


 Perhaps this can all be done today with AS 4 using multiple IP
 addresses - I dunno.

From sample-config.tcl ... you can map by URL, which means that by proper
partition of your URL-space you can do all you discuss above but shove
requests from spiders into their own thread pool.

#
# Example:  Multiple connection thread pools.
#
# To enable:
#
# 1. Define one or more thread pools.
# 2. Configure pools as with the default server pool.
# 3. Map method/URL combinations to the pools
#
# All unmapped method/URL's will go to the default server pool.
#
#ns_section ns/server/server1/pools
#ns_section slow Slow requests here.
#ns_section fast Fast requests here.
#
#ns_section ns/server/server1/pool/slow
#ns_param map {POST /slowupload.adp}
#ns_param maxconnections  100   ;# Max connections to put on queue
#ns_param maxdropped  0 ;# Shut down if dropping too many conns
#ns_param maxthreads  20;# Tune this to scale your server
#ns_param minthreads  0 ;# Tune this to scale your server
#ns_param threadtimeout   120   ;# Idle threads die at this rate
#
#ns_section ns/server/server1/pool/fast
#ns_param map {GET /faststuff.adp}
#ns_param maxthreads 10
#


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread dhogaza
 Of course they are kludges

Well, there we have it, an excellent argument for not adapting these
particular patches.

 With every version we have bunch of things not working, openssl comes to
 mind,
 modules and drivers API changed. So this argument do not hold water.

Well, no.  The less complex the software we're maintaining, the fewer
maintenances headaches we'll have over time.

That's a given.

The argument is whether or not the feature's worth that extra cost, and if
the feature IS worth that extra cost, whether the kludge that's proposed
is the proper way to implement it.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Andrew Piskorski
On Tue, Aug 17, 2004 at 02:42:58PM -0700, [EMAIL PROTECTED] wrote:

  With every version we have bunch of things not working, openssl
  comes to mind, modules and drivers API changed. So this argument
  do not hold water.

 Well, no.  The less complex the software we're maintaining, the fewer
 maintenances headaches we'll have over time.

I propose this:  No one is allowed to claim that any patch either is or
is not a big source of complexity and mainenance headaches unless
they've at least actually read the code in the patch.

So far, the only people who've actually claimed they've read the
patches are the two authors and Zoran.  I'm guessing Dossy has read
them too but I'm not sure.  Did you, Don?

I can't seem to checkout the AOLserver head from SourceForge right
now, so I haven't applied it against 4.1 in order to read what it
really does, but according to wc -l, Vlad's patch is a grand total of
147 lines.

You know what?  I have a REAL hard time believing that this 147 line
patch could possibly be the complexity and maintenance nightmare that
you're implying, especially since Vlad claims that it's very very
simple.  Heck, my little 'ns_addrbyhost -all' patch is 285 lines!

Arguments about avoiding kludges and the like are worth hearing, but
please, let's not go overboard on the, Any change at all is
potentially destabilising, evil evil evil! tack.

Stephen's patch is larger, at 1573 lines.

--
Andrew Piskorski [EMAIL PROTECTED]
http://www.piskorski.com/


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] QOS, SEDA Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Dossy Shiobara
On 2004.08.17, Andrew Piskorski [EMAIL PROTECTED] wrote:
 On Tue, Aug 17, 2004 at 01:32:23PM -0700, Jim Wilcoxson wrote:

  The reason thread pools would be interesting to me personally is to be
  able to control quality of service better.  For example, I may want a
  pool of 5 threads to handle search engine spidering requests, and a
  pool of 5 threads to handle PHP requests, 5 threads to handle a

 Previously, someone on the list (ah, it was Nathan Folkman)
 recommended Matt Welsh's SEDA paper:

   http://www.mail-archive.com/[EMAIL PROTECTED]/msg07026.html
   http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf
   http://www.eecs.harvard.edu/~mdw/proj/seda/

 That sort of thing sounds both useful and doable in AOLserver.

Hint: Look at the new driver model in AOLserver 4.1.

-- Dossy

--
Dossy Shiobara   mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
  He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on. (p. 70)


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


Re: [AOLSERVER] QOS, SEDA Re: [AOLSERVER] Support for non-HTTP protocols

2004-08-17 Thread Nathan Folkman
[EMAIL PROTECTED] wrote:
On Tue, Aug 17, 2004 at 01:32:23PM -0700, Jim Wilcoxson wrote:

The reason thread pools would be interesting to me personally is to be
able to control quality of service better.  For example, I may want a
pool of 5 threads to handle search engine spidering requests, and a
pool of 5 threads to handle PHP requests, 5 threads to handle a

Previously, someone on the list (ah, it was Nathan Folkman)
recommended Matt Welsh's SEDA paper:
 http://www.mail-archive.com/[EMAIL PROTECTED]/msg07026.html
 http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf
 http://www.eecs.harvard.edu/~mdw/proj/seda/
That sort of thing sounds both useful and doable in AOLserver.

Can you tell us how it would be better than the thread pool mechanism
which was added to AOLserver 4?

Each addresses different issues. The thread pools are nice in that they
give you a way to isolate (by URL I believe?) certain types of activites
to particular pools of threads, thus preventing any one paritcular type
of activity from utilizing all of the threads. Here's a real world example.
Imagine a single Web Server that serves both an application that does a
lot of interaction with a database, and also serves up system status
pages and other information. Suppose you have the server configured with
a max of 10 connection threads. Now imagine a user comes along and
decides to do some sort of degenerate query which takes order minutes.
The same user, seeing nothing happening, keeps hitting reload. In fact,
he's so eager to see some results that he hits the reload button 10
times. You've now got all 10 of your connection threads busy working on
his long running database query. Any user wanting to see the system
status would not be able to get to the page since the server is now
thread maxed.
Now imagine you've set things up with thread pools. The database tool
gets a max of 5, and the system stats page gets a max of 5. Now our over
anxious database application user can only tie up a maximum of 5
connection threads working on his database query, leaving up to 5
connection threads for users wishing to see the system stats page.
The SEDA article discusses an approach where you mix a single-threaded
event driven piece, in our case it could be the driver thread, with
multi-threaded workers, the connection threads. The idea is to avoid
having the connection threads, which are relatively precious resources,
from sitting around idle waiting on things like I/O. Here's an example
that illustrates this.
Imagine you've got an application that pulls in data from many sources
via simple Web service calls. The driver thread is busy spinning,
accepting requests. A request comes to the Web server. A callback is
fired off based on the request URL (or something else in the request).
The callback fires off a Web service call. The driver thread spins.
Perhaps the driver thread accepts a few more requests. The response from
the Web service call is received. The driver thread then hands off the
initial request plus the data returned from the Web service call to a
connection thread where the rest of your application code executes.
The main point of this approach is to move the I/O events up into the
single-threaded driver thread, and to avoid waiting on events in your
connection threads. That's roughly the idea at least. ;-)
Hopefully that makes sense?
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.


--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED] with the
body of SIGNOFF AOLSERVER in the email message. You can leave the Subject: field of 
your email blank.