You can subscribe to this list here.
2005 |
Jan
|
Feb
(53) |
Mar
(62) |
Apr
(88) |
May
(55) |
Jun
(204) |
Jul
(52) |
Aug
|
Sep
(1) |
Oct
(94) |
Nov
(15) |
Dec
(68) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(130) |
Feb
(105) |
Mar
(34) |
Apr
(61) |
May
(41) |
Jun
(92) |
Jul
(176) |
Aug
(102) |
Sep
(247) |
Oct
(69) |
Nov
(32) |
Dec
(140) |
2007 |
Jan
(58) |
Feb
(51) |
Mar
(11) |
Apr
(20) |
May
(34) |
Jun
(37) |
Jul
(18) |
Aug
(60) |
Sep
(41) |
Oct
(105) |
Nov
(19) |
Dec
(14) |
2008 |
Jan
(3) |
Feb
|
Mar
(7) |
Apr
(5) |
May
(123) |
Jun
(5) |
Jul
(1) |
Aug
(29) |
Sep
(15) |
Oct
(21) |
Nov
(51) |
Dec
(3) |
2009 |
Jan
|
Feb
(36) |
Mar
(29) |
Apr
|
May
|
Jun
(7) |
Jul
(4) |
Aug
|
Sep
(4) |
Oct
|
Nov
(13) |
Dec
|
2010 |
Jan
|
Feb
|
Mar
(9) |
Apr
(11) |
May
(16) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(7) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
(92) |
Nov
(28) |
Dec
(16) |
2013 |
Jan
(9) |
Feb
(2) |
Mar
|
Apr
(4) |
May
(4) |
Jun
(6) |
Jul
(14) |
Aug
(12) |
Sep
(4) |
Oct
(13) |
Nov
(1) |
Dec
(6) |
2014 |
Jan
(23) |
Feb
(19) |
Mar
(10) |
Apr
(14) |
May
(11) |
Jun
(6) |
Jul
(11) |
Aug
(15) |
Sep
(41) |
Oct
(95) |
Nov
(23) |
Dec
(11) |
2015 |
Jan
(3) |
Feb
(9) |
Mar
(19) |
Apr
(3) |
May
(1) |
Jun
(3) |
Jul
(11) |
Aug
(1) |
Sep
(15) |
Oct
(5) |
Nov
(2) |
Dec
|
2016 |
Jan
(7) |
Feb
(11) |
Mar
(8) |
Apr
(1) |
May
(3) |
Jun
(17) |
Jul
(12) |
Aug
(3) |
Sep
(5) |
Oct
(19) |
Nov
(12) |
Dec
(6) |
2017 |
Jan
(30) |
Feb
(23) |
Mar
(12) |
Apr
(32) |
May
(27) |
Jun
(7) |
Jul
(13) |
Aug
(16) |
Sep
(6) |
Oct
(11) |
Nov
|
Dec
(12) |
2018 |
Jan
(1) |
Feb
(5) |
Mar
(6) |
Apr
(7) |
May
(23) |
Jun
(3) |
Jul
(2) |
Aug
(1) |
Sep
(6) |
Oct
(6) |
Nov
(10) |
Dec
(3) |
2019 |
Jan
(26) |
Feb
(15) |
Mar
(9) |
Apr
|
May
(8) |
Jun
(14) |
Jul
(10) |
Aug
(10) |
Sep
(4) |
Oct
(2) |
Nov
(20) |
Dec
(10) |
2020 |
Jan
(10) |
Feb
(14) |
Mar
(29) |
Apr
(11) |
May
(25) |
Jun
(21) |
Jul
(23) |
Aug
(12) |
Sep
(19) |
Oct
(6) |
Nov
(8) |
Dec
(12) |
2021 |
Jan
(29) |
Feb
(9) |
Mar
(8) |
Apr
(8) |
May
(2) |
Jun
(2) |
Jul
(9) |
Aug
(9) |
Sep
(3) |
Oct
(4) |
Nov
(12) |
Dec
(13) |
2022 |
Jan
(4) |
Feb
|
Mar
(4) |
Apr
(12) |
May
(15) |
Jun
(7) |
Jul
(10) |
Aug
(2) |
Sep
|
Oct
(1) |
Nov
(8) |
Dec
|
2023 |
Jan
(15) |
Feb
|
Mar
(23) |
Apr
(1) |
May
(2) |
Jun
(10) |
Jul
|
Aug
(22) |
Sep
(19) |
Oct
(2) |
Nov
(20) |
Dec
|
2024 |
Jan
(1) |
Feb
|
Mar
(16) |
Apr
(15) |
May
(6) |
Jun
(4) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(13) |
Nov
(18) |
Dec
(6) |
2025 |
Jan
(12) |
Feb
|
Mar
(2) |
Apr
(1) |
May
(11) |
Jun
(5) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Zoran V. <zv...@ar...> - 2006-01-11 18:04:27
|
Am 02.01.2006 um 13:31 schrieb Zoran Vasiljevic: > > Am 31.12.2005 um 18:24 schrieb Vlad Seryakov: > >> Agreed on that as well, let's do it > > Conclusion: > > ns_register_filter when method urlPattern script ?arg1 arg2 ...?" > > The script definition must thus match: > > proc script {when args} {...} > > For calls w/o args, we are compatbile with AS. > For calls w/ args, we are not. > > Who will do that? Stephen? I'm looking into this now... I will suggest we change this for *all* Tcl callbacks. Therefore the: Ns_TclCallback * Ns_TclNewCallback(Tcl_Interp *interp, void *cbProc, char *script, char *scriptarg) should migrate to: Ns_TclCallback * Ns_TclNewCallback(Tcl_Interp *interp, void *cbProc, char *script, int argc, char **argv) where argc will hold the number and argv strings of all arguments. I do not know if anybody from outside is using this call in which case we should name it something like: Ns_TclNewCallbackEx (admitently, not very innovative...) Does anybody use this call? Vlad, do you use it in some of your numerous modules? Cheers Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-11 17:33:37
|
Am 30.12.2005 um 03:11 schrieb Stephen Deasey: > > Still to think about are per-thread Tcl caches. The main reason for > these are that you can put Tcl objects in the cache, not just their > string rep, which is particularly useful for already-compiled byte > code -- i.e. for *.tcl pages. > > The best solution for caching byte code might be to share the > mechanism with ADP pages. They currently have a pre-thread cache of > script blocks, and a per-server cache of text blocks, for each page. > AOLserver 4.5 adds a per-server output cache. We could use this for > *.tcl pages as well, perhaps negating the need for per-thread Tcl > caches. That still leaves Tcl objects like lists or dictionaries that > you may not want to stringify on each access. > > Input welcome... Hmhmhmhm... those adp caches are pretty-much app-dependent (adp), right? OTOH, the cache module is absolutely generic: put X in, get X out whatever X is, or? We do not have any use for that. If I need such thing, I create a namespaced array and stuff things there. Admitently, this is not a real cache where things are expired, but during the (short) connection lifetime I do not have that many things I'd like to keep arround... I don't know... If anybody has the need to make this beast, feel free to do that. I'm perfectly happy with the global cache as-is now. Cheers Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-11 17:01:05
|
Am 11.01.2006 um 17:53 schrieb Jamie Rasmussen: > Sounds good to me, my SourceForge ID is jrasmuss23. You are in. Cheers Zoran |
From: Jamie R. <jra...@sb...> - 2006-01-11 16:53:42
|
> Hi Jamie! > > Nice to hear from you again! > > I am very interested to have a Win-expert on the > board. > I do not know about others but we, as you probably > know, > ship a product based on the NS for Unices > (Sol/Linux,Mac) > and Windows. At the moment most of the developers in > the > NS camp (well to be honest all except one) have > mostly > Unix experience. To have more people handling the > Win part > would be a great relief for us. > > I suggest the following, if you agree: we add you as > developer, > you check-in your patches into RFE, we go thru them > together > and apply them after examination. This RFE check-in > is needed > so we can better track what has been adopted in the > server and > what not. This is not a commit-barrier, just a small > admin > burden to get things better organized. > > The NS code is based on AS 4.0. This is about one > year ago > and since then we have been constantly improving it > and adding > features. > > What do you think? Sounds good to me, my SourceForge ID is jrasmuss23. I'll start looking at merging patches over. Thanks! Jamie |
From: Zoran V. <zv...@ar...> - 2006-01-11 11:11:35
|
Am 06.01.2006 um 16:56 schrieb Vlad Seryakov: > I uploaded driver.c into SFE, it needs more testing because after > my last corrections and cleanups it seems i broke something. I would clean/destroy the "uploadTable" AND "hosts" hashtable in NsWaitDriversShutdown() if the drivers have been stopped allright: } else { Ns_Log(Notice, "driver: shutdown complete"); driverThread = NULL; ns_sockclose(drvPipe[0]); ns_sockclose(drvPipe[1]); /* CLEANUP THE hosts hashtable */ } } else { Ns_Log(Notice, "spooler: shutdown complete"); spoolThread = NULL; ns_sockclose(spoolPipe[0]); ns_sockclose(spoolPipe[1]); /* CLEANUP THE uploadTable hashtable */ } |
From: Zoran V. <zv...@ar...> - 2006-01-11 08:30:42
|
Am 11.01.2006 um 06:35 schrieb Jamie Rasmussen: > Hello Everyone, > For a while I've been maintaining a private build of > AOLserver, with a mix of custom modules / new features > / Win32 fixes / bug fixes. Several of these were done > while I was working for Alex Hisen, who runs a number > of production AOLserver sites on Windows. (Jeff Huber > also contributed.) Since carrying these patches > forward to new versions is onerous, Alex and I would > like to see them incorporated into stock AOLserver > and/or NaviServer before the codebases diverge too > greatly. > If you're interested, a list of the changes is at: > http://www.jamierasmussen.com/download/AM-AOLserver-Changes.txt > Some of these were reported on SourceForge but not > commented on, so I don't know their worth. AOLserver > is mostly a hobby for me now, so I haven't had time to > follow up as much as I would like. Most recently I've > been playing with the new build system, and have a > script to help download and build the many > dependencies for a "batteries-included" windows > distribution. > I haven't had a chance to evaluate NaviServer on > Win32 yet, but it seems like you're doing some really > neat stuff, so I'm looking forward to it. In the > meantime, if you'd like any more information on what > we have, please let me know. > Thanks! > Hi Jamie! Nice to hear from you again! I am very interested to have a Win-expert on the board. I do not know about others but we, as you probably know, ship a product based on the NS for Unices (Sol/Linux,Mac) and Windows. At the moment most of the developers in the NS camp (well to be honest all except one) have mostly Unix experience. To have more people handling the Win part would be a great relief for us. I suggest the following, if you agree: we add you as developer, you check-in your patches into RFE, we go thru them together and apply them after examination. This RFE check-in is needed so we can better track what has been adopted in the server and what not. This is not a commit-barrier, just a small admin burden to get things better organized. The NS code is based on AS 4.0. This is about one year ago and since then we have been constantly improving it and adding features. What do you think? Cheers Zoran |
From: Jamie R. <jra...@sb...> - 2006-01-11 05:35:20
|
Hello Everyone, For a while I've been maintaining a private build of AOLserver, with a mix of custom modules / new features / Win32 fixes / bug fixes. Several of these were done while I was working for Alex Hisen, who runs a number of production AOLserver sites on Windows. (Jeff Huber also contributed.) Since carrying these patches forward to new versions is onerous, Alex and I would like to see them incorporated into stock AOLserver and/or NaviServer before the codebases diverge too greatly. If you're interested, a list of the changes is at: http://www.jamierasmussen.com/download/AM-AOLserver-Changes.txt Some of these were reported on SourceForge but not commented on, so I don't know their worth. AOLserver is mostly a hobby for me now, so I haven't had time to follow up as much as I would like. Most recently I've been playing with the new build system, and have a script to help download and build the many dependencies for a "batteries-included" windows distribution. I haven't had a chance to evaluate NaviServer on Win32 yet, but it seems like you're doing some really neat stuff, so I'm looking forward to it. In the meantime, if you'd like any more information on what we have, please let me know. Thanks! Jamie |
From: Zoran V. <zv...@ar...> - 2006-01-09 16:29:15
|
Am 09.01.2006 um 17:27 schrieb Vlad Seryakov: > Usually it's only one default pool used. Yes, that's why I'm not so sure that the change would be that optimal. I guess I should make some clarifying comment at that place and leave it as-is. Zoran |
From: Vlad S. <vl...@cr...> - 2006-01-09 16:26:09
|
Usually it's only one default pool used. Zoran Vasiljevic wrote: > > Am 09.01.2006 um 17:07 schrieb Zoran Vasiljevic: > >> >> Now, if nobody sees any problem with that, I will >> make that change in driver.c > > > hmhmhmhm... one drawback is: if you only DO have just > one conn queue, then it is better the way it is now... > One could make NsQueueConn recognize that case and return > some special code like -1 or such.... > > Zoran > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Zoran V. <zv...@ar...> - 2006-01-09 16:15:12
|
Am 09.01.2006 um 17:07 schrieb Zoran Vasiljevic: > > Now, if nobody sees any problem with that, I will > make that change in driver.c hmhmhmhm... one drawback is: if you only DO have just one conn queue, then it is better the way it is now... One could make NsQueueConn recognize that case and return some special code like -1 or such.... Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-09 16:05:44
|
Am 09.01.2006 um 16:38 schrieb Vlad Seryakov: > Looks like it will skip > (for the others: I had a short conversation with Vlad over AIM double-checking this) Yes, this is what I thought. So, the "proper" way would be to code this like: if (waitPtr != NULL) { sockPtr = NULL; while ((nextPtr = waitPtr) != NULL) { waitPtr = nextPtr->nextPtr; nextPtr->nextPtr = sockPtr; sockPtr = nextPtr; } while (sockPtr != NULL) { nextPtr = sockPtr->nextPtr; if (!NsQueueConn(sockPtr, &now)) { sockPtr->nextPtr = waitPtr; waitPtr = sockPtr; } sockPtr = nextPtr; } } Now, if nobody sees any problem with that, I will make that change in driver.c I'm still looking in the new driver.c with spooler support. I believe this is allright but will do some more peeking (it helps me understand the rest of the code :-) ) Cheers Zoran |
From: Vlad S. <vl...@cr...> - 2006-01-09 15:36:45
|
Looks like it will skip Zoran Vasiljevic wrote: > > Am 09.01.2006 um 16:11 schrieb Vlad Seryakov: > >> In driver thread you do not know how mahy and each pool you gonna use >> until you call NsQueueConn, it is called for every ready socket >> untill all queues are full, then you wait next iteration to start >> queuing > > > Say I have 10 ready sockets. 2 of them should be queued to pool A > and 8 of them to pool B. > > Let name those sockets: > a-1 > a-2 > b-1 > b-2 > ... > b-8 > > Now I start: > > NsQueueConn(a-1) : OK > NsQueueConn(a-2) : FAIL > > See? The code will automatically SKIP b1-b8 > just because a-2 failed to queue? > > Either this is true or I still do not understand > how this works :-( > > Zoran > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Zoran V. <zv...@ar...> - 2006-01-09 15:27:10
|
Am 09.01.2006 um 16:11 schrieb Vlad Seryakov: > In driver thread you do not know how mahy and each pool you gonna > use until you call NsQueueConn, it is called for every ready socket > untill all queues are full, then you wait next iteration to start > queuing Say I have 10 ready sockets. 2 of them should be queued to pool A and 8 of them to pool B. Let name those sockets: a-1 a-2 b-1 b-2 ... b-8 Now I start: NsQueueConn(a-1) : OK NsQueueConn(a-2) : FAIL See? The code will automatically SKIP b1-b8 just because a-2 failed to queue? Either this is true or I still do not understand how this works :-( Zoran |
From: Vlad S. <vl...@cr...> - 2006-01-09 15:10:08
|
In driver thread you do not know how mahy and each pool you gonna use until you call NsQueueConn, it is called for every ready socket untill all queues are full, then you wait next iteration to start queuing Zoran Vasiljevic wrote: > > Am 08.01.2006 um 19:37 schrieb Vlad Seryakov: > >> There could be different connection pools with one connection queue >> in each pool > > > Now if this is so, then I do not understand why NsQueueConn is not > called for each ready socket. > If the socket A is bound to conn pool A' and the socket B to conn pool B' > then there is no reason NOT to NsQueueConn(B) if the NsQueueConn(A) fails. > > Or is there something deeper and not so obvious?? > > Cheers > Zoran > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Zoran V. <zv...@ar...> - 2006-01-09 08:21:52
|
Am 08.01.2006 um 19:37 schrieb Vlad Seryakov: > There could be different connection pools with one connection queue > in each pool Now if this is so, then I do not understand why NsQueueConn is not called for each ready socket. If the socket A is bound to conn pool A' and the socket B to conn pool B' then there is no reason NOT to NsQueueConn(B) if the NsQueueConn(A) fails. Or is there something deeper and not so obvious?? Cheers Zoran |
From: Vlad S. <vl...@cr...> - 2006-01-08 18:35:17
|
There could be different connection pools with one connection queue in each pool Zoran Vasiljevic wrote: > > Am 07.01.2006 um 17:37 schrieb Vlad Seryakov: > >> It means if cannot queue socket, does not make sense to queue others >> because the only fail may happen in NsQueueConn is queue overflow, so >> need to wait until there are available slots. > > > How many connection queues are there? Do we have one connection > queue per process or per virtual server or even per thread pool? > > Cheers, > Zoran > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Zoran V. <zv...@ar...> - 2006-01-08 14:55:55
|
Am 07.01.2006 um 17:37 schrieb Vlad Seryakov: > It means if cannot queue socket, does not make sense to queue > others because the only fail may happen in NsQueueConn is queue > overflow, so need to wait until there are available slots. How many connection queues are there? Do we have one connection queue per process or per virtual server or even per thread pool? Cheers, Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-07 20:53:34
|
Am 07.01.2006 um 17:41 schrieb Vlad Seryakov: > Just in case for future encahncements, we may restrict spooling > queue and keep socks in waiting list in driver for timeout or > something else. > allright. |
From: Vlad S. <vl...@cr...> - 2006-01-07 16:38:28
|
Just in case for future encahncements, we may restrict spooling queue and keep socks in waiting list in driver for timeout or something else. Zoran Vasiljevic wrote: > > Am 06.01.2006 um 16:56 schrieb Vlad Seryakov: > >> I uploaded driver.c into SFE, it needs more testing because after my >> last corrections and cleanups it seems i broke something. >> > > What is the meaning of: > > case SOCK_SPOOL: > if (!SockSpoolPush(sockPtr)) { > sockPtr->nextPtr = readPtr; > readPtr = sockPtr; > } > break; > > The SockSpoolPush() as I see can only return true, > hence the test is not needed. > I would rewrite the SockSpoolPush to return void > and hence: > > case SOCK_SPOOL: > SockSpoolPush(sockPtr); > break; > > Or is there any hidden case when SockSpoolPush() > can fail (I can't see that from the code)? > > Cheers > Zoran > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Vlad S. <vl...@cr...> - 2006-01-07 16:37:15
|
Yes, it makes sense Zoran Vasiljevic wrote: > > Am 06.01.2006 um 19:00 schrieb Vlad Seryakov: > >> sockPtr will be queued into the connection queue for processing, it >> may happen from driver thread or from spooler thread, works equally. > > > Hmhmhmhmhmhmhm... > > The SOCK_SPOOL is only retured from SockRead(). The SockRead() > is only attempted in the DriverThread if : > > if (sockPtr->drvPtr->opts & NS_DRIVER_ASYNC) { > n = SockRead(sockPtr, 1); > } else { > n = SOCK_READY; > } > > So, the same test as above in SpoolThread has no meaning at all > since you will never come to SpoolThread unless somebody > (driver thread) calls SockRead which MAY return SOCK_SPOOL. > > Do I see this right? > > I'm not nitpicking! I'm just trying to understand the code. > I believe this thing could be misleading and you should > (if I'm correct) remove the above snippet from the SpoolThread > and just write: > > n = SockRead(sockPtr, 1); > > Zoran > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Vlad S. <vl...@cr...> - 2006-01-07 16:34:54
|
It means if cannot queue socket, does not make sense to queue others because the only fail may happen in NsQueueConn is queue overflow, so need to wait until there are available slots. Zoran Vasiljevic wrote: > Hi, > > I have some trouble understanding the code from driver.c > below. This is used in both Driver and SpoolerThread code: > > /* > * Attempt to queue any pending connection > * after reversing the list to ensure oldest > * connections are tried first. > */ > > if (waitPtr != NULL) { > sockPtr = NULL; > while ((nextPtr = waitPtr) != NULL) { > waitPtr = nextPtr->nextPtr; > nextPtr->nextPtr = sockPtr; > sockPtr = nextPtr; > } > while (sockPtr != NULL) { > nextPtr = sockPtr->nextPtr; > /*****/ if (waitPtr != NULL || !NsQueueConn(sockPtr, &now)) { > sockPtr->nextPtr = waitPtr; > waitPtr = sockPtr; > } > sockPtr = nextPtr; > } > } > > The problem is: if (waitPtr != NULL || !NsQueueConn(sockPtr, &now)) { > > This means that AFTER the FIRST ready socket which DOES NOT get > queued to the connection queue, ALL OTHER ready sockets are also > put on the wait list? But why? Those other sockets may need to > use some different thread pool which has the free resources to > accept the connection? > > Wouldn't it be better to write: > > while (sockPtr != NULL) { > nextPtr = sockPtr->nextPtr; > if (!NsQueueConn(sockPtr, &now)) { > sockPtr->nextPtr = waitPtr; > waitPtr = sockPtr; > } > sockPtr = nextPtr; > } > > instead? > > Zoran > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > naviserver-devel mailing list > nav...@li... > https://lists.sourceforge.net/lists/listinfo/naviserver-devel > -- Vlad Seryakov 571 262-8608 office vl...@cr... http://www.crystalballinc.com/vlad/ |
From: Zoran V. <zv...@ar...> - 2006-01-07 08:30:12
|
Am 06.01.2006 um 16:56 schrieb Vlad Seryakov: > I uploaded driver.c into SFE, it needs more testing because after > my last corrections and cleanups it seems i broke something. > What is the meaning of: case SOCK_SPOOL: if (!SockSpoolPush(sockPtr)) { sockPtr->nextPtr = readPtr; readPtr = sockPtr; } break; The SockSpoolPush() as I see can only return true, hence the test is not needed. I would rewrite the SockSpoolPush to return void and hence: case SOCK_SPOOL: SockSpoolPush(sockPtr); break; Or is there any hidden case when SockSpoolPush() can fail (I can't see that from the code)? Cheers Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-07 08:23:39
|
Am 07.01.2006 um 09:18 schrieb Zoran Vasiljevic: > if (sockPtr->drvPtr->opts & NS_DRIVER_ASYNC) { > n = SockRead(sockPtr, 1); Uhhhh, sorry, wrong part... if (sockPtr->drvPtr->opts & NS_DRIVER_ASYNC) { n = SockRead(sockPtr, 0); Cut/paste error. Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-07 08:16:21
|
Am 06.01.2006 um 19:00 schrieb Vlad Seryakov: > sockPtr will be queued into the connection queue for processing, it > may happen from driver thread or from spooler thread, works equally. Hmhmhmhmhmhmhm... The SOCK_SPOOL is only retured from SockRead(). The SockRead() is only attempted in the DriverThread if : if (sockPtr->drvPtr->opts & NS_DRIVER_ASYNC) { n = SockRead(sockPtr, 1); } else { n = SOCK_READY; } So, the same test as above in SpoolThread has no meaning at all since you will never come to SpoolThread unless somebody (driver thread) calls SockRead which MAY return SOCK_SPOOL. Do I see this right? I'm not nitpicking! I'm just trying to understand the code. I believe this thing could be misleading and you should (if I'm correct) remove the above snippet from the SpoolThread and just write: n = SockRead(sockPtr, 1); Zoran |
From: Zoran V. <zv...@ar...> - 2006-01-07 07:28:43
|
Hi, I have some trouble understanding the code from driver.c below. This is used in both Driver and SpoolerThread code: /* * Attempt to queue any pending connection * after reversing the list to ensure oldest * connections are tried first. */ if (waitPtr != NULL) { sockPtr = NULL; while ((nextPtr = waitPtr) != NULL) { waitPtr = nextPtr->nextPtr; nextPtr->nextPtr = sockPtr; sockPtr = nextPtr; } while (sockPtr != NULL) { nextPtr = sockPtr->nextPtr; /*****/ if (waitPtr != NULL || !NsQueueConn(sockPtr, &now)) { sockPtr->nextPtr = waitPtr; waitPtr = sockPtr; } sockPtr = nextPtr; } } The problem is: if (waitPtr != NULL || !NsQueueConn(sockPtr, &now)) { This means that AFTER the FIRST ready socket which DOES NOT get queued to the connection queue, ALL OTHER ready sockets are also put on the wait list? But why? Those other sockets may need to use some different thread pool which has the free resources to accept the connection? Wouldn't it be better to write: while (sockPtr != NULL) { nextPtr = sockPtr->nextPtr; if (!NsQueueConn(sockPtr, &now)) { sockPtr->nextPtr = waitPtr; waitPtr = sockPtr; } sockPtr = nextPtr; } instead? Zoran |