[freetds] ct_cancel hangs

James K. Lowden jklowden at freetds.org
Wed Jul 25 10:02:22 EDT 2007


ZIGLIO, Frediano, VF-IT wrote:
> > > net.c:542:Received packet
> > > 0000 fd 30 00 02 00 d1 04 00-00                      |.0...... .|
> > > 
> > > token.c:1920:processing row.  column size is 253
> > 
> > That "fd 30 00" means "end of result set (fd), "results 
> > cancelled (30)".  
> > 
> 
> Mumble mumble... it seems that client part is still expecting row data
> while server send cancel acknowledge... it would be helpful to see
> previous packet header. Perhaps server stop sending row informations
> just sending an empty packet with last flag set to 1 ??

Well, it's a mistake for the client to expect row data after the server
sends that cancel acknowledgement.  

	Cancel -->
	<-- data
	<-- data
	<-- data
	<-- End of Results, results cancelled 
	[state == idle]

Looking at net.c::tds_read_packet(), maybe we should set tds->last_packet
= 1 when the cancelled bit is set in the packet header?  

--jkl



More information about the FreeTDS mailing list