Say I have code that is accesses multiple datasources. CFTransaction cannot
be used across multiple datasources.
My question is can I make two CFTransaction blocks and on the first one set a
CFTransaction SavePoint.
Then if the second CFTransation errors can I roll back the first
Bump... Casey - is this method thread safe?
-Original Message-
From: Brook Davies [mailto:cft...@logiforms.com]
Sent: December-13-11 10:15 PM
To: cf-talk
Subject: RE: cftransaction isolation=repeatable_read
So this would update and select the rows at the same time? Would I need to
use
So this would update and select the rows at the same time? Would I need to
use transaction or would this guarantee if another request for the same
query at the exact same time happened, it would not return or update the
same rows?
The INSERTED scope corresponds to the record you're updating,
On Tue, Dec 13, 2011 at 6:13 PM, Brook Davies cft...@logiforms.com wrote:
I guess my question is, will this lead to performance problems? Is there a
more elegant way to do this?
Are you using MS SQL server? If so you only need one query which will still
output rows like the first query with
...@uberwebsitesolutions.com]
Sent: December-13-11 6:29 PM
To: cf-talk
Subject: Re: cftransaction isolation=repeatable_read
On Tue, Dec 13, 2011 at 6:13 PM, Brook Davies cft...@logiforms.com wrote:
I guess my question is, will this lead to performance problems? Is
there a more elegant way
that really shouldn't cause you to only be able to run 1 request at a time.
what actually happens if you run the page twice at the same time ?
On Tue, Nov 1, 2011 at 12:39 AM, Matt Blatchley m...@bridgeleaf.com wrote:
Win2003 Standard
I removed the cflock and I'm currently using
I thought that would be the case as well after researching a bit
further, but I haven't been able to get the two to finish at the same
time. Could just be a timing thing. The code that is executed once
the XML response is returned is quite lengthy, performing a number of
checks and rolling up
well don;t forget that CF now has debugging again, so you could use
cfeclipse to step through and see what is happening.
I wouldn't expect 2 concurrent requests to run exactly the same, as
presumably each would be working on different data surely ?
On Tue, Nov 1, 2011 at 11:22 AM, Matt Blatchley
Very true. Thanks Russ.
~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive:
On Tue, Nov 1, 2011 at 1:13 AM, Matt Blatchley wrote:
Microsoft SQL Server 2008 (SP1)
Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
Database table stores the Metrics by daily values so it's constantly
being hit by the imported data and the user interface.
That is
That is what snapshot isolation is designed for:
http://msdn.microsoft.com/en-us/library/tcbchxcb%28v=vs.80%29.aspx
Great information, thank you Jochem.
~|
Order the Adobe Coldfusion Anthology now!
How about using cfthread and processing multiple items with each request,
that will at least half the time it takes.
Regards
Russ Michaels
From my mobile
On 31 Oct 2011 19:57, Matt Blatchley m...@bridgeleaf.com wrote:
Greeting all,
I'm running into an issue and was wondering if someone
On Mon, Oct 31, 2011 at 8:56 PM, Matt Blatchley wrote:
So my question is this: Is it possible to have multiple queues
running on different machines and dumping the data into the same
table?
Yes.
Using cftransaction, the second queue attempts to run but has to wait
until the main Queue
I'm not sure how much flexibility I have on this version because it's
a hosted solution in a shared environment:
Microsoft SQL Server 2008 (SP1)
Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
Database table stores the Metrics by daily values so it's constantly
being
what type of cftransaction are you using, do u have cflocking as well,
if so what type.
are you really using Windows NT ? i'm pretty sure the minimum
requirements for SQL Server 2008 is windows 2003 server.
Russ
~|
Order the
Win2003 Standard
I removed the cflock and I'm currently using cftransaction
isolation=READ_COMMITTED
~|
Order the Adobe Coldfusion Anthology now!
If the databases are on the same server, you can try accessing the
other database from your main data source by specifying the full
path to the table:
SELECT *
FROM databaseName.owner.tableName
On SQL Server, owner is often dbo. Or you can use the shortcut
databaseName..tableName
~Brad
On Wed, Mar 24, 2010 at 9:05 PM, Chad Gray wrote:
Datasource FOO verification failed.
The root cause was that: java.sql.SQLException: Datasource names for all the
database tags within the cftransaction tag must be the same.
How can I get around this error? The function is just doing a
I figured out a work around. I made a view of the table.
So now all my tables inside of the CFTransaction are in the same database.
Chad
-Original Message-
From: Chad Gray [mailto:cg...@careyweb.com]
Sent: Wednesday, March 24, 2010 4:05 PM
To: cf-talk
Subject: cftransaction and
Thanks everyone - looks like the sproc is indeed committing on the backend. I
do miss writing my own queries...
~|
Want to reach the ColdFusion community with something they want? Let them know
on the House of Fusion mailing
I'm pretty sure the rollback is not occurring because your cfstoredproc call
inside your saveDataToDatabase() function is running in it's own
transaction. I think you'd need to include a rollback; command inside
your stored procedure if you have a failure.
Dave
-Original Message-
From:
The way the code is written, the cfif will never be true because it will always
have br in so the length will never be below 4.
Hi all, I understand the gist of cftransaction, but I've tried using
it with a conditional rollback on an action page in the below example
and it doesn't seem to
Nevermind, I read the cfif backwards. I was thinking it was looking for an
empty string. In that case, the cfif will always be true. This doesn't
explain the rollback issue, but once the rollback is fixed, it will always
rollback.
Do you have any commits in your stored procedure? If so,
Good catch - you're right; I would normally include a cfif to append the return
string and the br to allReturnMessages only if the return string isn't
empty.
The stored proc was written by someone else, so I'm not 100% sure what's
happening with it, which is part of the problem. I suppose
The way the CFTransaction tag works is CF is putting the TRANSACTION statements
in the T-SQL it sends to the server. So the rollback tag will rollback any
transactions that haven't been committed. You could have 100's of queries
running with Inserts/deletes/updates and everything will
I suppose what I should be asking is - is it even possible
to do what I'm trying to do?
Yes. Unless, as someone else mentioned, the procedure you are calling is using
its own transaction. Is it?
-Leigh
~|
Want
The CFTRANSACTION tag takes care of the top-level rollback all on it's
own. The explicit rollback is only used if you have logic inside the
CFTRANSACTION tag that needs to roll back because of some
non-exception situation. So you'll get the behaviour you want if you
remove the CFTRY..CFCATCH
Thanks Barney will try that out :)
I also found an old reply by you on a similar topic
RE: cftransaction cftry order
Barney Boisvert
Thu, 29 May 2003 09:43:52 -0700
:)
Regards,
Arsalan
--
From: Barney Boisvert bboisv...@gmail.com
Sent
looks like /cfcatch is missing
~|
Want to reach the ColdFusion community with something they want? Let them know
on the House of Fusion mailing lists
Archive:
/cftransaction
--
From: Barney Boisvert bboisv...@gmail.com
Sent: Tuesday, July 28, 2009 1:00 PM
To: cf-talk cf-talk@houseoffusion.com
Subject: Re: CFTRANSACTION with MS Access Database
The CFTRANSACTION tag takes care of the top-level rollback all on it's
Guys cumbersome
below is my code and still its not rolling back ... I have
injected an error in the 2nd insert statement but the transaction
doesn't rolls back... 1st insert takes place... 2nd one has error wat
could be the problem ... dear experts???
Try putting your CFTRY / CFCATCH around the outside of the CFTRANSACTION
... the error handler is not triggering your roll-back, I would guess.
cftry
!---//Starting Transaction
-
cftransaction
!---//QUERY1 Insert
@houseoffusion.com
Subject: Re: CFTRANSACTION with MS Access Database
Try putting your CFTRY / CFCATCH around the outside of the CFTRANSACTION
... the error handler is not triggering your roll-back, I would guess.
cftry
!---//Starting Transaction
try / catch is still the right way to capture errors, but if it's inside
the transaction, then the TR won't fire.
if this isn't working, though, then I gotta question whether Access
supports transaction locking at all? It's been years since I used it, so I
can't vouch one way or the other
No guys this isn't working ... nor that what Barney and Dave advised...
does anyone has a working example of such scenario? I would be very thankful
if someone provides me with a somewhat similar working example
and yes... I am using using CFTRY/CFCATCH because I need to log the
: Re: CFTRANSACTION with MS Access Database
No guys this isn't working ... nor that what Barney and Dave
advised...
does anyone has a working example of such scenario? I would be very
thankful
if someone provides me with a somewhat similar working example
and yes... I am using
arsalk...@hotmail.com
Sent: Wednesday, July 29, 2009 1:00 AM
To: cf-talk cf-talk@houseoffusion.com
Subject: Re: CFTRANSACTION with MS Access Database
hey Dave... can you provide me with some literature or example code on
this
topic ... specially in regard to MS Access
Thanks for your comments. So long as I do not mess up my transactions because
of cfcs.
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get the Free Trial
Yes, you can, so long as they all hit the same datasource.
Wondering if we can wrap cfc methods (with db queries) in a outer
cftransaction?? Any comments ???
~|
Adobe® ColdFusion® 8 software 8 is the most important and
Yes, you can, so long as they all hit the same datasource.
Wondering if we can wrap cfc methods (with db queries) in a outer
cftransaction?? Any comments ???
I've heard that they've added the feature enhancement in CF9 that allows
you to nest cftransactions now. So if you have already
Thanks for the suggestion. For one of my sites I'm going to need to do
something along these lines, because the LOAD DATA function is disabled by the
host in the shared hosting environment. I need to import/update the data (a CSV
file that gets FTPed to the server) into a MySQL database a few
On 3/13/07, megan c wrote:
Thanks for the suggestion. For one of my sites I'm going to need to do
something along
It is EASY with cfhttp (if you've got well formed data), but I have
never load tested it.
or (not nearly as easy)
If you've got createObject power you can use HSSQLDB, which
It is EASY with cfhttp (if you've got well formed data), but I have
never load tested it.
or (not nearly as easy)
If you've got createObject power you can use HSSQLDB, which seems
pretty
robust for CSV stuff- but CFHTTP is probably fastest from 0 to Query.
The one advantage to
On 3/13/07, megan c wrote:
Thank you so much--this worked like a charm (once I realized that there
was a tab at the end of the lines mucking things up, that is).
Glad I could help!
~|
ColdFusion MX7 and Flex 2
Build
Does load data infile query of mysql doesnt work in cftransaction?
I'm curious... did you ever figure this out? I'm also trying to determine the
simplest/most efficient way of loading the data from a .csv file into a mysql
DB using CF.
On 3/12/07, megan cytron [EMAIL PROTECTED] wrote:
Does load data infile query of mysql doesnt work in cftransaction?
I'm curious... did you ever figure this out? I'm also trying to determine
the simplest/most efficient way of loading the data from a .csv file into a
mysql DB using CF.
This
Tom Kitta wrote:
You should only use cftransaction tag to make sequence of SQL statements
into one atomic unit. You should never have anything inside your
cftransaction block that is not SQL related especially if its going to take
a long time (i.e. more than few ms). You don't want to lock
5:54 PM
Subject: RE: cftransaction Question
Tom,
The statement about, You should only use cftransaction tag to make
sequence
of SQL statements into one atomic unit.
Is Correct.
Your Statement about, You should never have anything inside your
cftransaction block that is not SQL related
- Original Message -
From: Andrew Scott [EMAIL PROTECTED]
To: CF-Talk cf-talk@houseoffusion.com
Sent: Sunday, March 04, 2007 5:54 PM
Subject: RE: cftransaction Question
Tom,
The statement about, You should only use cftransaction tag to make
sequence
of SQL statements into one atomic
Tom Kitta wrote:
I stand by my previous claim - transactions are used by DBs to set locking
level.
Transactions are used to group statements into atomic units and control
the visibility of changes made by concurrent transactions. In some
databases locks are used to implement transactions,
Andrew Scott wrote:
Well anyone who puts user interaction between trnsactions should be shot.
But to day that a transaction should only ever run for 10ms, and if it goes
out to 50ms is not a good call either.
I have developed applications that have been very complex in the
calculations,
I think we are into this big 'depends' here conversation - yes if your FTP
is needed in the middle of the processing and it runs once in a while the
transaction is one way to go. However, it would create some issues if it is
to be run like 10 times a second on a server.
As for the DB - I guess
yes if your FTP is needed in the middle of the processing and it runs
once in a while the
transaction is one way to go. However, it would create some issues if it is
to be run like 10 times a second on a server.
However, do not count on the CFTRANSACTION to roll back any file
transfer in case
@houseoffusion.com
Sent: Monday, March 05, 2007 1:49 AM
Subject: Re: cftransaction Question
Andrew Scott wrote:
Well anyone who puts user interaction between trnsactions should be shot.
But to day that a transaction should only ever run for 10ms, and if it
goes
out to 50ms is not a good
Yes I know :) I even used this as a joke with fellow developers at my
company - cftransaction that rolls back *everything*
TK
- Original Message -
From: Claude_Schnéegans [EMAIL PROTECTED]
To: CF-Talk cf-talk@houseoffusion.com
Sent: Monday, March 05, 2007 11:33 AM
Subject: Re
You should only use cftransaction tag to make sequence of SQL statements
into one atomic unit. You should never have anything inside your
cftransaction block that is not SQL related especially if its going to take
a long time (i.e. more than few ms). You don't want to lock your SQL server
DBs
Developer
Aegeon Pty. Ltd.
www.aegeon.com.au
Phone: +613 8676 4223
Mobile: 0404 998 273
-Original Message-
From: Tom Kitta [mailto:[EMAIL PROTECTED]
Sent: Monday, 5 March 2007 10:20 AM
To: CF-Talk
Subject: Re: cftransaction Question
You should only use cftransaction tag to make
: 0404 998 273
-Original Message-
From: Tom Kitta [mailto:[EMAIL PROTECTED]
Sent: Monday, 5 March 2007 10:20 AM
To: CF-Talk
Subject: Re: cftransaction Question
You should only use cftransaction tag to make sequence of SQL statements
into one atomic unit. You should never have anything
PROTECTED]
Sent: Monday, 5 March 2007 12:48 PM
To: CF-Talk
Subject: Re: cftransaction Question
Scott
Suppose I have 2 queries in cftransaction
1- inserts into database
2 reads from database
Then cftransaction action=commit
is it only after the commit i will be able to see the values in the
database?
my
I have a question. I have a application where on one template
I have several inserts into one datasource are wrapped inside
a cftransaction. At the end of the loop, but outside the
cftransaction, I have an update of a record in a second
datasource, marking it as viewed. My question, is
.
Of course, I could be thinking of something else, as I said, I didn't
just test this.
-Original Message-
From: Dave Watts [mailto:[EMAIL PROTECTED]
Sent: Wednesday, February 21, 2007 4:14 PM
To: CF-Talk
Subject: RE: cftransaction and two datasources
I have a question. I have
I was wondering if anyone had any experience executing
cfstoredproc calls within cftransaction's.
The livedocs for cftransaction focus on cfquery operations.
Though, using a MS Sql Server 2000 database, cftransaction
seems to fully support rollback of cfstoredproc calls.
I know it
Meaning a success/fail value for the transaction as a whole?
The only time CFTRANSACTION will implicitly roll back is when an
exception is raised. So if the CFTRANSACTION block exits normally
(assuming you're not doing a manual rollback), then you know the
transaction was successful.
Tony wrote:
does that retrieve the newest UUID Primary Key generated?
right now, i have a dateAdded field that i sort by, to get the newest one.
That's not real reliable. What happens if two records are added in the
same second? :)
Yes, it returns the last identity inserted, and inside a
Yep, indeed. They should also not be using @@identity :-)
-Original Message-
From: Rick Root [mailto:[EMAIL PROTECTED]
Sent: 04 April 2006 03:51
To: CF-Talk
Subject: cftransaction
I'm looking through someone elses code and I came across this...
cftransaction
cfquery
Keep in mind that most other databases (besides SQL Server) don't allow
you to send two queries with at once like this. It's very insecure,
because of sql injection possibilities. But since you guys are all
talking about MS SQL, this works fine. :)
-Original Message-
From: Pete
In MS SQL I've seen two ways to handle returning the last inserted primary
key:
INSERT INTO t_doctors (#ColNames#)
VALUES (#preserveSingleQuotes(ColValues)#);
SELECT SCOPE_IDENTITY() AS newpkey;
This will return the last inserted primary key for the current
If possible you should use SCOPE_IDENTITY() for the reasons stated - as
noted direct from BOL.
-Original Message-
From: Rich Kroll [mailto:[EMAIL PROTECTED]
Sent: 04 April 2006 15:31
To: CF-Talk
Subject: RE: cftransaction
In MS SQL I've seen two ways to handle returning the last
Tony wrote:
does that retrieve the newest UUID Primary Key generated?
right now, i have a dateAdded field that i sort by, to
get the newest one.
That's not real reliable. What happens if two records are
added in the
same second? :)
Yes, it returns the last identity inserted, and inside
The 2nd query won't allow anyone to perform a sql injection attack
against the database, although it's possible that using #ColNames# or
#preserveSingleQuotes(ColValues)# in this example might.
Keep in mind that most other databases (besides SQL
Server) don't allow
you to send two queries with
Hey Rich, how are things at Site?
I think sessions is the wrong label for this (although I could be
wrong) :) -- I believe scope_identity() works on the batch, whereas
an open session for example in Query Analyzer can execute multiple
batches. I think CF Server in particular only creates one
How would you to this in (say) MySQL?
Munson, Jacob wrote:
Keep in mind that most other databases (besides SQL Server) don't allow
you to send two queries with at once like this. It's very insecure,
because of sql injection possibilities. But since you guys are all
talking about MS SQL,
I'm looking through someone elses code and I came across this...
cftransaction
cfquery name=qInsertData datasource=#APPLICATION.dsn#
INSERT INTO t_doctors (#ColNames#)
VALUES (#preserveSingleQuotes(ColValues)#)
/cfquery
/cftransaction
!--- pull the
I'm not sure about MySQL, but in Postgres you can select a new identity
key /before/ you do an insert. The key is unique to you, and can never
be used by anybody else (just like getting a new key when you do an
insert). Then you can use that key for your insert and any subsequent
queries. Much
Right. The problem is not that the developer is going to do a SQL
injection, it's that Hackers on a public facing site will. DB2, Oracle
and others don't allow two queries in one statement to stop things like
what Ben Forta demonstrates in this blog post:
http://tinyurl.com/ozq8x
That said, SQL
That said, SQL Inject attacks /can/ be prevented by doing
proper data cleaning for all queries that use values
generated by outsiders (URL params, forms, etc.) I'm just
saying that Oracle, DB2 and the others prefer to prevent
things at the database level, rather than putting the
Whether you can run multiple queries within a single SQL
batch is generally
determined by the JDBC drivers (or other database clients)
being used, not
by the database. It's my understanding that Oracle and DB2
both can accept
SQL batches. Generally, Oracle is just as vulnerable to SQL
I was told by someone that develops on Oracle that multiple
queries are not supported, but I suppose he could have been
wrong.
You can run an SQL batch through SQL*Plus and see for yourself. That's just
another Oracle client. And I'm pretty sure that you can run SQL batches
against DB2 with
I believe he was wrong, unless I am just misunderstanding multiple
queries because I do multiple ones all the time just not with a CFQUERY
and due to the JDBC drivers from what I can tell.
On 4/4/06, Munson, Jacob [EMAIL PROTECTED] wrote:
I was told by someone that develops on Oracle that
Dave Watts wrote:
That said, SQL Inject attacks /can/ be prevented by doing
proper data cleaning for all queries that use values
generated by outsiders (URL params, forms, etc.) I'm just
saying that Oracle, DB2 and the others prefer to prevent
things at the database level, rather than
Well, I think we're talking apples and oranges. This is what we tried
in DB2: in SQL Server we tried to use OpenQuery to send more than one
statement at once to DB2, and it just silently ignored the second
statement. However, we /could/ do two separate OpenQuery statements in
the same SQL
If you're going to put two SQL statements in the same CFQUERY tag, you
also have to suppress the returned messages from the database, or the
second SQL Statement will throw an error. SET NOCOUNT ON will
supress the returned messages. so your CFQUERY looks something like
this:
cfquery
SELECT IDENT_CURRENT('tablename ') which returns the latest identity
in the table name in question. That also prevents getting the
identity of the wrong table in the event of the query being used as
part of a trigger which affects multiple tables.
Unless someone has created a new record
Actually what I do more frequently nowdays is use createUUID() to
generate a primary key of my own and insert that instead of using
identity fields. All of these issues go away then.
The only reason I use identity fields nowdays is if I think it's
likely I might have to be typing queries out in
Actually what I do more frequently nowdays is use createUUID() to
generate a primary key of my own and insert that instead of using
identity fields. All of these issues go away then.
That's a good idea, except that UUIDs take more space and are slower to
index when compared to integers.
Doing well, lots of fun new things on the horizon! How've you been? Btw,
it's good to see you on here.
Rich Kroll
Application Developer
-Original Message-
From: S. Isaac Dealey [mailto:[EMAIL PROTECTED]
Sent: Tuesday, April 04, 2006 10:56 AM
To: CF-Talk
Subject: RE: cftransaction
Actually what I do more frequently nowdays is use
createUUID() to generate a primary key of my own
and insert that instead of using identity fields.
All of these issues go away then.
That's a good idea, except that UUIDs take more
space and are slower to index when compared to
integers.
Actually what I do more frequently nowdays is use
createUUID() to
generate a primary key of my own and insert that instead
of using
identity fields. All of these issues go away then.
The only reason I use identity fields nowdays is if I
think it's
likely I might have to be typing queries
S.Isaac Dealey wrote:
That's a good idea, except that UUIDs take more
space and are slower to index when compared to
integers. However, that's only a problem if you
are dealing with large amounts of data.
It only starts to become an issue with tens of millions of records, at
which point
SELECT IDENT_CURRENT('tablename ') which returns the
latest identity in the table name in question. That
also prevents getting the identity of the wrong table
in the event of the query being used as part of a
trigger which affects multiple tables.
Jacob Munson wrote:
Unless someone has
Jacob Munson wrote:
Unless someone has created a new record after your insert,
then you'll get their identity instead. SCOPE_IDENTITY,
on the other hand, returns the last identity value
generated for any table in the current session and the
current scope. So with one, you might get
Jacob Munson wrote:
Unless someone has created a new record after your
insert,
then you'll get their identity instead.
SCOPE_IDENTITY,
on the other hand, returns the last identity value
generated for any table in the current session and the
current scope. So with one, you might get
You are correct.
Moreover, a better solution would be something like this (assuming SQL Server):
cftransaction
cfquery name=qInsertData datasource=#APPLICATION.dsn#
INSERT INTO t_doctors (#ColNames#)
VALUES (#preserveSingleQuotes(ColValues)#);
does that retrieve the newest UUID Primary Key generated?
right now, i have a dateAdded field that i sort by, to get the newest one.
tony
On 4/3/06, Pete Ruckelshaus [EMAIL PROTECTED] wrote:
You are correct.
Moreover, a better solution would be something like this (assuming SQL
Server):
I'm going through old emails I hadn't read, sorry it's taken so long to
respond.
There are rules for passwords, and no spaces be one of mine. I
figure if Microsoft can tell me that Backup 2/15/2005.zip is an
illegal file name, then I can tell someone that my dog has$$fleas
is an illegal
I'm going through old emails I hadn't read, sorry it's taken so long to
respond.
I always, always, always set the first column in my table to primary
key, identity, and often (but NOT always) a clustered index.
I think you're usually better off reserving the clustered index for
something other
CFTRANSACTION action=BEGIN
CFTRY
many CFQUERY tags
CFTRANSACTION action=COMMIT /
CFCATCH
CFTRANSACTION action=ROLLBACK /
/CFCATCH
/CFTRY
/CFTRANSACTION
It's
If I comment out the CFTRANSACTION action=COMMIT tag and the query
completes without errors, the data is still written to the database.
Shouldn't I have to explicitly use COMMIT in order for the data to be
saved? At first glance it seems that the only time I'd want
to ROLLBACK is in the
Using your pseudo code, I do the following... Never had a problem with it
and I'm not dependent on varables being set etc...
CFTRANSACTION action=BEGIN
CFTRY
many CFQUERY tags
CFTRANSACTION action=COMMIT /
It's expected behavior. The /cftransaction from CFTRANSACTION
action=BEGIN will automatically commit if no error occurred or
rollback if an error occurred.
Pascal
-Original Message-
From: Cliff Meyers [mailto:[EMAIL PROTECTED]
Sent: 22 March 2005 17:23
To: CF-Talk
Subject:
1 - 100 of 296 matches
Mail list logo