-----Original Message-----
From: dcdev-bounces@dcportal.net [mailto:dcdev-bounces@dcportal.net] On Behalf Of Nouanda
Sent: Sunday, January 18, 2004 10:56 PM
To: 'Direct Connect developers'
Subject: RE: [dcdev] adc
Ok, protocol seems chosen, no prob...but just one question:
How hub can know what client use what protocol version? (because it seems
new client don't send any protocol version information to hub)
-----Message d'origine-----
De : dcdev-bounces@dcportal.net [mailto:dcdev-bounces@dcportal.net] De la
part de Jacek Sieka
Envoyé : samedi 17 janvier 2004 20:59
À : 'Direct Connect developers'
Objet : [dcdev] adc
ADC has made it to v0.4, it's available at http://dcplusplus.sf.net/ADC.htm
for the interested...an implementation will soon follow...
/J
ADC has made it to v0.4
ADC has made it to v0.4
Using an error code in ERR is a good idea however but the code you gave is rather ... illogical. They seems to be grouped by program sending them (client, hub, ...) but I think it is more logic to group them by kind of results (ok, recoveral, not recoverable, fatal) and then by program (or program and then kind).Good point, Eric. I think Arne expanded error codes based on a couple pieces of feedback. The feedback may not have been all coherent though. I think I prefer SMTP[1] style codes over HTTP[2] style ones. I'm not sure how well they map to error conditions in the current or next protocols, but...
1yz Positive Preliminary replyIt has a nice mirroring of the fourcc code in ADC... but it might not be too applicable.
2yz Positive Completion reply
3yz Positive Intermediate reply
4yz Transient Negative Completion reply
5yz Permanent Negative Completion reply
ADC has made it to v0.4, it's available at http://dcplusplus.sf.net/ADC.htm
for the interested...an implementation will soon follow...
/J
-----Original Message-----
From: dcdev-bounces@dcportal.net [mailto:dcdev-bounces@dcportal.net] On Behalf Of Erik Ekman
Sent: Tuesday, January 20, 2004 7:09 PM
To: Direct Connect developers
Subject: Re: [dcdev] adc
Hello
Why is there no regexp search? It could use the signal RX and it could limit the search
after the other three types are complete.
/Erik
New to this list, building a client-server dc client in java.
On Sat, 17 Jan 2004 20:59:24 +0100
"Jacek Sieka" <j_s@telia.com> wrote:
> ADC has made it to v0.4, it's available at http://dcplusplus.sf.net/ADC.htm
> for the interested...an implementation will soon follow...
> > /J
> > -- >
-----Original Message-----
From: dcdev-bounces@dcportal.net [mailto:dcdev-bounces@dcportal.net] On Behalf Of eric
Sent: Monday, January 19, 2004 6:54 PM
To: Direct Connect developers
Subject: Re: [dcdev] adc
> ADC has made it to v0.4
Using an error code in ERR is a good idea however but the code you gave is rather ... illogical. They seems to be grouped by program sending them (client, hub, ...) but I think it is more logic to group them by kind of results (ok, recoveral, not recoverable, fatal) and then by program (or program and then kind). IMHO, Nick invalid cannot be in the same category as nick busy. Nick busy is recoverable but nick invalid is not recoveral, same goes for perm/temp ban (not recoverable/recoverable).
Eric
A) because the vast majority of users don't have the slightest idea of what
a regular expression is
B) because it would require a 3rd party library (or very much work) to
create a BASE compilant client on the biggest target platform, i e it's not
part of the C standard library
C) because they are slower (indexed searches become tricky for instance)
D) because if there's demand for it, it's very, very easy to add to the
protocol and mandate by the hub (using sup)
so i recommend using a port above 1024... not like its difficult to sayI don't think ADC should have *any* default port - ie. each hub address should be fully qualified like: adc://hubname.domain.tld:port It should be left up to _implementations_ to pick a random port when a hub is first configured/created (and then registered to a public list - something ADC doesn't touch on yet), and to make sure that port isn't likely firewalled (like the backorifice [or other trojan] ports). Of course, if you want to make it easy to block the new protocol, we could go back to a forced client and server listening port.
which port to use, but might as well mention it at the start...
Date: Sun, 18 Jan 2004 23:19:42 +0100
From: Jacek Sieka <j_s@telia.com>
Reply-To: Direct Connect developers <dcdev@dcportal.net>
To: 'Direct Connect developers' <dcdev@dcportal.net>
Subject: RE: [dcdev] adc
The hub doesn't know and doesn't care, but the client does because all valid
adc hub addresses start with adc://
If a hub wants to support both protocols (which, at least for now, seems
doable), it'll have to do it on two different ports.
/J
> -----Original Message-----
> From: dcdev-bounces@dcportal.net
> [mailto:dcdev-bounces@dcportal.net] On Behalf Of Nouanda
> Sent: Sunday, January 18, 2004 10:56 PM
> To: 'Direct Connect developers'
> Subject: RE: [dcdev] adc
>
> Ok, protocol seems chosen, no prob...but just one question:
> How hub can know what client use what protocol version?
> (because it seems
> new client don't send any protocol version information to hub)
>
> -----Message d'origine-----
> De : dcdev-bounces@dcportal.net
> [mailto:dcdev-bounces@dcportal.net] De la
> part de Jacek Sieka
> Envoyé : samedi 17 janvier 2004 20:59
> À : 'Direct Connect developers'
> Objet : [dcdev] adc
>
> ADC has made it to v0.4, it's available at
> http://dcplusplus.sf.net/ADC.htm
> for the interested...an implementation will soon follow...
>
> /J
>
> --
>
On Tuesday 20 January 2004 20:00, Jacek Sieka wrote:The majority of people do know how to drive though (in the western part of
> A) because the vast majority of users don't have the slightest idea of what
> a regular expression is
but the majority does not mean everybody. The majority of people have feet but this does not have prevented automobile creation ;-)
Being in posix.2 means, among other things, that it's not covered by the
> B) because it would require a 3rd party library (or very much work) to
> create a BASE compilant client on the biggest target platform, i e it's not
> part of the C standard library
I am not sure about this. When I do a "man regex", it is classified in man(3) and it is in POSIX.2. Moreover, there is no libregex anymore since ... a long time :)
> C) because they are slower (indexed searches become tricky for instance)It is. Even some of your simple searches took ~0.1s, imagine what a more
It is not slower (see earlier mails in the mailing list for test results) and indexed searches are mainly a matter of index organization.
Because it adds complexity to a BASE client...if anything should be added,
> D) because if there's demand for it, it's very, very easy to add to the
> protocol and mandate by the hub (using sup)
then why not add it immediatly if it is so easy :)
so i recommend using a port above 1024... not like its difficult to say
which port to use, but might as well mention it at the start...
If we randomize ports, Packeteer's Packetshaper will probably keep up anyway, but port-based firewalling systems will be defeated.
Indeed; I was thinking the same. That could easily drain a hub's
bandwidth. Since it's rather clearly defined anyway which commands
will ever need a similar "upgrade", I'd say that it's better in that
case to make those commands generic enough to be upgraded easily.
Add encryption (even simple XOR-based will do), and then threaten under the
DMCA anybody who attempts to detect the protocol by decrypting the stream :)
The majority of people do know how to drive though (in the western part of
the world where the majority has a car anyway)...and as sandos noted; all
the regex searchs you provided in your tests were archivable with substring
search as well...
Being in posix.2 means, among other things, that it's not covered by the
standard c library...it also means that it's not available on windows, and
although you might think that linux is the answer to everything, I doubt
that your client comes even close to the >1000000 downloads that dc++ had
in it's second latest version (and that being from sf only, not counting
the countless mirrors and freeware cd's its being distributed
through)...hence, the major dc platform does not support regexes without
library support...
It is. Even some of your simple searches took ~0.1s, imagine what a more
complex one would do that actually uses the enhanced expressiveness of
regexes (start by introducing a few | and you'll see...), and if it takes
0.1s it means that the highes search throughput will be 10searches/s with
100% cpu, which is not very impressive, not in my eyes anyway...
Jacek Sieka:
You're missing the point. With this scheme, a client can create a new
command and have it sent to other clients correctly without any updates to
the hub software at all (if nmdch supported this, we wouldn't need a new
protocol at all, because creating a new search or myinfo command would have
been doable without having to update and rewrite all the hubs out
there...)...
This mean hub must trust all client's commands, and just forward to
client(s) depending to the first char?
Jernej Simon?i? writes:
> On Wednesday, January 21, 2004, 6:03:55, david vargas (nny) wrote:
> > so i recommend using a port above 1024... not like its difficult to
> > say which port to use, but might as well mention it at the start...
>
> It's not hard to drop root privileges right after the port has been
> bound, and if you're really paranoid, you could always run the server in
> chroot jail.
Yeah, but it might be nice for a user to be able to start it without
requiring the binary to be suid...
I use regexes very frequently to filter search results, and I do that
because I can achieve things that I cannot achieve with substring
searches. I think it would be great to have regex searching in the
client, because then fewer relevant search results would be dropped
because of UDP packets being discarded by my modem when my bandwidth
is breached.
I don't understand why it matters whether the majority of users will
be able to use regexes or not. Since regexes allow a set of achievable
search criteria that is a strict superset of that which substring
searches allows for, without sacrificing almost any speed (see below),
it is, quite simply, very, very good.
As someone mentioned earlier on this list, regexes _are_ available for
Windows from http://gnuwin32.sf.net/. I don't use Windows, so I can't
give any specifics, but I guess that it's a library that can be
directly included in the source code for a program, just like, for
example, bzip2 has been included in DC++.
Considering how regexes are available as a seperate library and all, I
don't see how using regexec() instead of strstr() makes it so much
more complex. In that case, I'd say that eg. filelist compression adds
much more complexity, wouldn't you agree? It is nonetheless very
useful, just like regex searches are.
Indeed; I was thinking the same. That could easily drain a hub's
bandwidth. Since it's rather clearly defined anyway which commands
will ever need a similar "upgrade", I'd say that it's better in that
case to make those commands generic enough to be upgraded easily.
At 11:09 PM 1/21/2004 +0100, you wrote:
>Add encryption (even simple XOR-based will do), and then threaten under
> the DMCA anybody who attempts to detect the protocol by decrypting the
> stream :)
While cute, relying on the effectiveness of this system strikes me as
foolish. There's plenty of real encryption available; use it.
I don't understand why it matters whether the majority of users will
be able to use regexes or not. Since regexes allow a set of achievable
search criteria that is a strict superset of that which substring
searches allows for, without sacrificing almost any speed (see below),
it is, quite simply, very, very good.
As for more complex regexes, I egrepped through 400000 lines of the
Linux networking code, and even using backrefs, without a doubt the
most CPU-intensive part of regexes, I simply couldn't manage to push
it beyond 0.25 seconds, and that was on very many lines. It is also
very important to note that nothing prevents a client implementation
from dropping a search once it has reached a certain time threshold
of, for example, 0.05 seconds, which prevents people from submitting
complex expressions just for the DoS fun of it.
Since regex substring
searches are as fast (or almost as fast) as ordinary substring
searches, normal users, who don't use regexes, won't even be impaired
by such behavior.
Such protection would be necessary, as
http://www.cs.rice.edu/~scrosby/hash/slides/USENIX-RegexpWIP.2.ppt shows
that even removing backrefs entirely doesn't immunize a RE engine from
attack. 400,000 lines requiring 0.25 seconds would suggest that, for
example, 100,000 lines requires 0.0625 seconds, which allows only 16
searches per second before one reaches 100% CPU usage. Even your example of
0.05 seconds allows only 20/second. I don't want a DC client I run
monopolizing near that much CPU time.
Another factor you haven't mentioned is your CPU: what is it?
As I demonstrated above, not without special support from the RE engine;
that 24-way or'd expression is going to be noticeably slower than the
semantically equivalent multiple substring search. The Perl5 method should
be similar in speed, but requires an NFA RE implementation exhibiting
unbounded-time behaviour and thus potentially vulnerable to the attacks
described above.
Finally, using regular expressions inhibits one from applying many
potential search optimizations, such as Bloom filters (used in Gnutella as
the QRP, or Query Routing Protocol) and suffix array-assisted searches. A
histogram of the speed results of the latter is at
http://opennavel.dnsalias.org/~fusbar/cologic/bmratio2.png ; the y axis
represents how many searches (out of approximately 20,000 total) were
faster or slower under that scheme than DC++'s default search by the
(inverse of natural log of) the x-axis value.
As I demonstrated above, not without special support from the RE engine;
that 24-way or'd expression is going to be noticeably slower than the
semantically equivalent multiple substring search. The Perl5 method should
be similar in speed, but requires an NFA RE implementation exhibiting
unbounded-time behaviour and thus potentially vulnerable to the attacks
described above.
There is a little flaw in your demonstration. You have assumed when a client searches for "a b c d", this means "a" & "b" & "c" & "d" but it is wrong. Speaking about probability, a.*b.*c.*d is probably what the user wants the most. For example, if a user searches for an album, he won't spend time to write the album title in the reverse order. That's why most of the time, "a b c d" means "a.*b.*c.*d" (when it is not exactly "a b c d"). Any user having enough experience in any search engine (even google) knows he should not use some simple words like "a", "the", "is" and to search for "heaven is a place on earth", he will search "heaven place earth" (and it is even shorter to write :) ).
At 11:09 PM 1/21/2004 +0100, you wrote:
Add encryption (even simple XOR-based will do), and then threaten under the
DMCA anybody who attempts to detect the protocol by decrypting the stream :)
While cute, relying on the effectiveness of this system strikes me as foolish. There's plenty of real encryption available; use it.
-cologic
You didnt understood what he said, did you. He never said that XOR encryption will be used, just that something that simple is enought for a trivial encryption.
You didnt understood what he said, did you. He never said that XOR encryption will be used, just that something that simple is enought for a trivial encryption.
_READ_ what has been written :P
And for resource limitations (resources = bandwidth,cpu,memory.. whatever), the client would simply refuse to perform the search if it gets too heavy (decided on factors that the client are to decide, not part of the actual protocol). And I belive that everyone agrees that a client refusing to perform the search due to resource limits is a fully acceptable reason.This is something we want to avoid I believe...if the system as a whole
> This mean hub must trust all client's commands, and just forward toWhat's there to trust/not trust?
> client(s) depending to the first char?
I have not seen this while reading but you are right. This is great, it will be the first protocol to have a built-in DoS feature. DoS is good for you :)It doesn't take a degree in computer science to make this a configuration
I agree, there should be no default port. Default ports exist for daemon running under inetd, not stand-alone daemon. We should not even suggest a default port.Did anyone suggest it?
and with standard library,even on windoz.Does Linus 2.6 have standard libraries?
There is a little flaw in your demonstration. You have assumed when a client searches for "a b c d", this means "a" & "b" & "c" & "d" but it is wrong.Matching all of the substrings is the way Jon Hess coded the original client, how can that somehow be an incorrect assumption?
Speaking about probability, a.*b.*c.*d is probably what the user wants the most. For example, if a user searches for an album, he won't spend time to write the album title in the reverse order. That's why most of the time, "a bWhat's wrong with supporting out of order matching of search strings? Some users do use it - I'm one.
optimizing something is good but optimizing something which is limited is IMHO just a waste of time.Using Gnutella's QRP model will limit the number of users that a hub has to broadcast to. Hub bandwidth, not CPU power, is the limiting factor, so I don't think that you should have dismissed cologic's suggested optimizations that easily.
Nah, I'm not sure about that. What if the user accidently pressesEven better: 10 duplicate searches? Send only one.
enter like 10 times (has happened to me from time to time when I'm so
tired that I think I let the button up completely, but in fact, it's
still down and autotyping)? Then all of a sudden the user must wait
for like 2 minutes two search again.
I think that it's better to make the hub warn, and then if the userOr... it could be implemented in both places.
wants delayed searches, that can be implemented in the client instead.
I agree. That's clearly what defines a power user. Not everyone has the same
usage, why do you want to limit the "power" given to users ?
Moreover, it won't be strstr because windoz loo^H^H^Husers won't understand
why if they search for "toto", they don't receive files like "Toto", "tOto"
or any other possible case sensitive changes.
I have not seen this while reading but you are right. This is great, it will
be the first protocol to have a built-in DoS feature. DoS is good for you :)
I'm sorry, but I can't seem to find anything about that in either myIt was message ID <401093D9.8030001@verizon.net> =)
mailbox or in the archives (even if I search through the raw archive
mbox, I can't find anything that looks like it). Was that on this
list?
> And for resource limitations (resources = bandwidth,cpu,memory..
> whatever), the client would simply refuse to perform the search if it
> gets too heavy (decided on factors that the client are to decide, not
> part of the actual protocol). And I belive that everyone
> agrees that a
> client refusing to perform the search due to resource limits
> is a fully
> acceptable reason.
This is something we want to avoid I believe...if the system as a whole
starts skipping too many searches, users will learn that they get different
results if they search more times, and that's bad...it's more or less like
the old multitasking systems that gave priority to processes where keyboard
input was being done to improve their responsiveness...it worked until the
users found out that their calculations went faster if they kept pressing a
button while doing it...
That was what I was referring to. And I don't think anyone said that
the current protocol was perfect.
In any case, I don't really know why I even followed up on the DoS
matter. The thing that I really don't agree with about ADC is the fact
that such a command division isn't actually necessary. I believe that
all commands should be clearly defined, and those that are broadcasted
should be specified in such a way that allows for easy future
extension of those commands.
I forgot to mention, that given the very narrow namespace in ADC -
three characters per command, you're pretty much doomed to have
namespace clashes when people start extending it too much. And then,
broadcasting commands that have different meanings for different
clients isn't really a good thing, IMHO.
I do agree with you in a way, in that it does seem appealing in termsAs a bit of background, the idea comes originally from irc client-to-client
of simplicity. However, I don't think that kind of simplicity is going
to hold, since the broadcast commands still often require some
individual intelligent processing by the hub. For example, the only
two commands in ADC that truly benefit from broadcasting are, as far
as I can see, the SCH and INF commands. These already differ in my
mind, in that if the hub receives to SCH commands too close in time to
each other, it should reject the second one with an error. However, if
it requires two INF commands within one "allowed broadcast period", if
you see what I mean, it shouldn't deny the second one. It should wait
until the broadcast timer expires, and accumulate all succeeding INF
commands and then re-broadcast the final data once the client is
allowed the broadcast bandwidth again, right?
flood_timer) flood_timer = now; now += 2; if(flood_timer - now > limit)kick();) that is...which works regardless of command, and allows for a
In a filesharing client? None of Gnutella, Kazaa, Napster, nor the current
DC have trained them to expect such case-sensitivity, nor do the top few
web search engines implement it.
The hub's problem is bandwidth. The client's problem is CPU time. Those "40
searches per second" are client CPU problems with regexes, not bandwidth
problems that would affect one's ability to share files (rendering your odd
ed2k comment utterly irrelevant).
In just what way would that be? If you are referring to the fact that
a specially crafted regex can take time to execute, then that issue
has already been covered in previous mails.
I think not, since Lindows, and other GNU/Linux distributions, are
case-sensitive, and thus their users will already often be accustomed
to such behavior.
If we should have waited for a good network protocol from windoz, we still would run netbeui, not TCP/IP. If a feature must be added, a possible missing function is a bad reason, just add it.
Moreover, currently, the problem is not the CPU speed, it is the bandwidth (especially upstream). If performing 40 searches per second use all your upload bandwidth then I think we will just have something like ed2k (good to find something, awful to obtain it).
In any case, though, that was a bad example to begin with, since
noone wants DC searches to be case-sensitive, whatever O/S they come
from.
Todd Pederzani writes:Please do not respond to trolls that aren't targeting you. =)
> eric wrote:
> > >and with standard library,even on windoz.
> > > >
> Does Linus 2.6 have standard libraries?
Hmmm... Have you understood how Linux works? Remember, Linux is just
the kernel, only the kernel. Why the whole system has come to be
called Linux is, to this very day, a mystery. As Richard Stallman has
correctly noted, it should be called GNU/Linux.
Thus, running the 2.4 or 2.6 kernel isn't even related to the
libraries. Upgrading to the 2.6 kernel doesn't change your libraries,
which will remain as standard as they have always been.
Fredrik Tolf
blackclaw@parsoma.net writes:
> Inadequately; nondeterministic search behaviour is ultimately
> counterproductive.
What exactly do you think the flaw is?
>Speaking about probability, a.*b.*c.*d is probably what the user wants the
>most. For example, if a user searches for an album, he won't spend time to
>write the album title in the reverse order. That's why most of the time,
> "a b
What's wrong with supporting out of order matching of search strings?
Some users do use it - I'm one.
Using Gnutella's QRP model will limit the number of users that a hub has
to broadcast to. Hub bandwidth, not CPU power, is the limiting factor,
so I don't think that you should have dismissed cologic's suggested
optimizations that easily.
Further, hub processing on commands needs to be done mainly for limiting
purposes - shares, slots, etc. Clients should do their own sanity checking
on messages that arrive, and should never trust what they get from the hub
anyway, so -specially for new commands- it is mainly up to the client to
decide whether to trust a command or not...
Now for the fourth time, "those 40 searches per second" scenario will
never happen, for previously given reasons.
Btw., you seem to be inventing different name puns on Linux in every
mail that you write. While, as I stated, I think that it would be
constructive to stop bashing at each others operating systems, I can't
help being a bit curious as to what grudge it is that you hold against
an excellent operating system. Would you mind mailing me your reasons
in a private mail?
I really don't think that was the heart of the matter. The thing wasI'm not sure I follow. Certainly, you could (if the hub doesn't enforce proper IPs) send a connection message to clients making them all try to connect to a remote IP. Or you could similarly fake an IP in the search string (causing a bit of udp traffic to the remote IP). Both are possible with the current protocol. If you're suggesting that there's a buffer overflow in one of the yet-to-be-coded clients... sure. Having the hub screen unknown commands (beyond some common-sense rate and bandwidth limiting) is the wrong approach to protecting users in my opinion. Such a buggy client should get eliminated (or fixed) through the software equivalent of natural selection - bad clients and hubs deserve to die and be replaced with better ones.
that with unknown broadcasted commands, you could potentially give a
command that would force compliant clients to send lots of data to an
unrelated IP address, thereby making DDoS attacks easy.
Oh, I'm sorry. I just thought that you had misspelled it by
accident. I hadn't seen that name pun before.
>There is a little flaw in your demonstration. You have assumed when a
> client searches for "a b c d", this means "a" & "b" & "c" & "d" but it is
> wrong. Speaking about probability, a.*b.*c.*d is probably what the user
> wants the most. For example, if a user searches for an album, he won't
> spend time to write the album title in the reverse order. That's why most
> of the time, "a b c d" means "a.*b.*c.*d" (when it is not exactly "a b c
> d"). Any user having enough experience in any search engine (even google)
> knows he should not use some simple words like "a", "the", "is" and to
> search for "heaven is a place on earth", he will search "heaven place
> earth" (and it is even shorter to write :) ).
I can with equal validity state that "a b c d is probably what the user
wants the
most": the more exacting the default searches are, the more different
searches an average/median user must use to attempt to find what he wants.
I don't have any evidence to back this claim up, but you didn't present any
either.
>optimizing something is good but optimizing something which is limited is
>IMHO
>just a waste of time.
Regular expressions are limited too, just differently.
>Moreover, finding something is good, being able to send
>it to the client requesting it in a reasonable period of time is better.
> Not everybody has access to a 100Mb connection, most of the users have
> ADSL or cable connections and if they take 5-10 minutes to send/receive
> their reply, I think they won't use this P2P network.
To what is this a response? Has anyone disagreed that "finding something is
good"?
But you should admit gnutella was not the most widely used protocol and there
is perhaps a reason. If it was that good, it should be more used than others
especially because it is available for now several years. What I just want to
say is we should not choose something because it is easy to optimize, we
should choose something for its features, optimizations will come later.
A client with insufficient bandwidth to handle the hubs connections with
complete and utter ease is one I don't care about downloading from anyway.
Yeah, I am, as soon as the Hurd becomes operational in... 10 years? Or
is the current schedule maybe aiming for 2030? =)
Seriously, I _love_ the Hurd concept, but... I'd just love if it
actually seemed to be getting anywhere. It's a real petty that it
doesn't.
2. Since hubs will restrict the search frequency anyway, isn't up to
the user if he wants to search for the same thing again the next
time he can, instead of searching for something else?
Fredrik Tolf wrote:
>2. Since hubs will restrict the search frequency anyway, isn't up to
> the user if he wants to search for the same thing again the next
> time he can, instead of searching for something else?
> >
Must this be the case? I haven't understood why discarding searches (or discarding searches and warning the user) is a better approach than reordering of commands by the hub. The cost is code complexity, but if you can delay searches, isn't that a more elegant solution?
- Todd
1. Since the regex searches will take almost exactly the same time
anyway (and therefore will be aborted at almost exactly the same
point), the users will most likely not get different results, or at
least not that very different results.
2. Since hubs will restrict the search frequency anyway, isn't up to
the user if he wants to search for the same thing again the next
time he can, instead of searching for something else?
That was what I was referring to. And I don't think anyone said that
the current protocol was perfect.
In any case, I don't really know why I even followed up on the DoS
matter. The thing that I really don't agree with about ADC is the fact
that such a command division isn't actually necessary. I believe that
all commands should be clearly defined, and those that are broadcasted
should be specified in such a way that allows for easy future
extension of those commands.
Yeah, I am, as soon as the Hurd becomes operational in... 10 years? Or
is the current schedule maybe aiming for 2030? =)
Seriously, I _love_ the Hurd concept, but... I'd just love if it
actually seemed to be getting anywhere. It's a real petty that it
doesn't.
But you should admit gnutella was not the most widely used protocol and there is perhaps a reason. If it was that good, it should be more used than others especially because it is available for now several years. What I just want to say is we should not choose something because it is easy to optimize, we should choose something for its features, optimizations will come later.