[freetds] INT_CANCEL return from DbLib error handler fails

Lowden, James K LowdenJK at bernstein.com
Fri May 2 17:30:09 EDT 2003

> From: Cooperstock, Dan [mailto:dan.cooperstock at hepcoe.com]
> Sent: May 2, 2003 2:16 PM
> I'm returning in INT_CANCEL from the error handler I set with 
> dberrhandle() in a DbLibrary application using FreeTDS. 
> As I understand it, that should cause working functions, like 
> dbsqlexec,
> which threw an error, to get a bad (not SUCCEED) return value. 

You understand correctly.  Looking at the code, our implementation is
defective.  Which is odd, because we had a very involved discussion about
this about six months ago.  Apparently we solved the problem in theory but
never got a round tuit.  Maybe the different libraries have conflicting
semantics, and we're not set up for that.  

If you're interested in fixing this, you'll need a current snapshot, or at
least upgrade to 0.61.  

The relevant function is (assuming it's a server-side message you're talking
about) is tds_process_msg() in src/tds/token.c:2019.  Near the end of that
function, we call the installed handler, but ignore its return code and
return TDS_SUCCEED.  

I don't know how fastidious we are about propogating the error back up the


The information contained in this transmission may contain privileged and
confidential information and is intended only for the use of the person(s)
named above.  If you are not the intended recipient, or an employee or agent
responsible for delivering this message to the intended recipient, any
review, dissemination, distribution or duplication of this communication is
strictly prohibited. If you are not the intended recipient, please contact
the sender immediately by reply e-mail and destroy all copies of the
original message. Please note that we do not accept account orders and/or
instructions by e-mail, and therefore will not be responsible for carrying
out such orders and/or instructions.

More information about the FreeTDS mailing list