[freetds] incorrect fix in net.c

James K. Lowden jklowden at freetds.org
Mon Apr 6 21:38:33 EDT 2009


Frediano Ziglio wrote:
> 2009/4/4 James K. Lowden <jklowden at schemamania.org>:
> > --- src/tds/net.c       16 Mar 2009 07:49:57 -0000      1.90
> > +++ src/tds/net.c       27 Mar 2009 09:22:49 -0000      1.91
> > @@ -700,7 +700,7 @@
> >           continue;
> >   }
> >
> > -  if (0 == nput || nput < 0 && sock_errno == EAGAIN)
> > +  if (0 == nput || sock_errno == EAGAIN)
> >           continue;
> >
> >
> > The above change is incorrect.  sock_errno has no meaning unless
> > send/write returns -1.
> >
> 
> [The] > 0 case is already handled, 0 case is tested by "0 == nput" so
> only < 0 is left (where sock_errno is valid)

Ah, clever.  OK.  

BTW, our mail clients are at war over spaces.  :-(  

The quoted text above appears on my screen as a series of pairs of 0x20
spaces alternating with "Â", what Unicode calls "LATIN CAPITAL LETTER A
WITH CIRCUMFLEX", U+00C2.  

What I originally sent was just a series of ASCII spaces, 0x20's.  The
mail header announced the encoding:

	Content-Type: text/plain; charset="us-ascii"
	Content-Transfer-Encoding: 7bit

Your message has

	Content-Type: text/plain; charset="utf-8"
	Content-Transfer-Encoding: base64

Decoded, the utf-8 looks like this:

$ sed -ne'/^Mj/,$p' 19500 | base64 -d | hexdump -C | sed -ne
'/net/,/continue/p'

64 73 2f 6e 65 74 2e 63  20 c2 a0 20 c2 a0 20 c2  |ds/net.c .. .. .|
a0 20 31 36 20 4d 61 72  20 32 30 30 39 20 30 37  |. 16 Mar 2009 07|
3a 34 39 3a 35 37 20 2d  30 30 30 30 20 c2 a0 20  |:49:57 -0000 .. |
c2 a0 20 c2 a0 31 2e 39  30 0a 3e 20 2b 2b 2b 20  |.. ..1.90.> +++ |
73 72 63 2f 74 64 73 2f  6e 65 74 2e 63 20 c2 a0  |src/tds/net.c ..|
20 c2 a0 20 c2 a0 20 32  37 20 4d 61 72 20 32 30  | .. .. 27 Mar 20|
30 39 20 30 39 3a 32 32  3a 34 39 20 2d 30 30 30  |09 09:22:49 -000|
30 20 c2 a0 20 c2 a0 20  c2 a0 31 2e 39 31 0a 3e  |0 .. .. ..1.91.>|
20 40 40 20 2d 37 30 30  2c 37 20 2b 37 30 30 2c  | @@ -700,7 +700,|
37 20 40 40 0a 3e 20 c2  a0 20 c2 a0 20 c2 a0 20  |7 @@.> .. .. .. |
c2 a0 20 c2 a0 20 63 6f  6e 74 69 6e 75 65 3b 0a  |.. .. continue;.|

Your mail client apparently converts every 0x20 0x20 pair to 0x20 0xA0,
makes every 2nd space a non-breaking space.  Those "c2 a0" sequences are
UTF-8 encodings of U+A0, a non-breaking space.  

My mail client, however, apparently doesn't recognize the charset property
of the Content-Type header.  It treats "c2 a0" as two characters: 0xC2 and
0xA0, an  and a non-breaking space.  

One of these days I'll upgrade, and I'm sure this old bug was fixed long
ago.  But I thought you might want to know where all those weird
characters were coming from.  

Regards, 

--jkl



More information about the FreeTDS mailing list