Index: src/gssapi-client.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/gssapi-client.c,v
retrieving revision 1.9
diff -u -r1.9 gssapi-client.c
--- src/gssapi-client.c	4 Nov 2004 21:22:27 -0000	1.9
+++ src/gssapi-client.c	14 Sep 2005 00:19:34 -0000
@@ -103,6 +103,8 @@
 
     do
     {
+	TRACE (TRACE_FUNCTION, "connect_to_gserver:%d: init",
+						__LINE__);
 	stat_maj = gss_init_sec_context (&stat_min, GSS_C_NO_CREDENTIAL,
 					 &gcontext, server_name,
 					 GSS_C_NULL_OID,
@@ -143,9 +145,14 @@
 		error (1, 0, "cannot send: %s", SOCK_STRERROR (SOCK_ERRNO));
 	    if (send (sock, tok_out.value, tok_out.length, 0) < 0)
 		error (1, 0, "cannot send: %s", SOCK_STRERROR (SOCK_ERRNO));
+	    TRACE (TRACE_FUNCTION, "connect_to_gserver:%d: send %d",
+						__LINE__, tok_out.length);
 
 	    recv_bytes (sock, cbuf, 2);
 	    need = ((cbuf[0] & 0xff) << 8) | (cbuf[1] & 0xff);
+
+	    TRACE (TRACE_FUNCTION, "connect_to_gserver:%d: recive %d",
+						__LINE__, need);
 
 	    if (need > sizeof buf)
 	    {
Index: src/server.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/server.c,v
retrieving revision 1.446
diff -u -r1.446 server.c
--- src/server.c	8 Sep 2005 18:40:20 -0000	1.446
+++ src/server.c	14 Sep 2005 00:19:42 -0000
@@ -7369,6 +7369,7 @@
     gss_name_t server_name, client_name;
     gss_cred_id_t server_creds;
     int nbytes;
+    int i;
     gss_OID mechid;
 
     hn = canon_host (server_hostname);
@@ -7396,10 +7397,12 @@
 
     /* The client will send us a two byte length followed by that many
        bytes.  */
-    if (fread (buf, 1, 2, stdin) != 2)
+    if (buf_read_data(buf_from_net, 1, &credbuf, &credbuflen) < 0)
 	error (1, errno, "read of length failed");
-
-    nbytes = ((buf[0] & 0xff) << 8) | (buf[1] & 0xff);
+    nbytes = (*credbuf & 0xff) << 8;
+    if (buf_read_data(buf_from_net, 1, &credbuf, &credbuflen) < 0)
+	error (1, errno, "read of length failed");
+    nbytes |= *credbuf & 0xff;
     if (nbytes <= sizeof buf)
     {
         credbuf = buf;
@@ -7411,8 +7414,16 @@
         credbuf = xmalloc (credbuflen);
     }
     
-    if (fread (credbuf, 1, nbytes, stdin) != nbytes)
-	error (1, errno, "read of data failed");
+    for (i = 0; i < nbytes;)
+    {
+	char *b;
+	size_t l;
+
+	if (buf_read_data(buf_from_net, nbytes - i, &b, &l) < 0)
+	    error (1, errno, "read of data failed");
+	memcpy(credbuf + i, b, l);
+	i += l;
+    }
 
     gcontext = GSS_C_NO_CONTEXT;
     tok_in.length = nbytes;
@@ -7460,10 +7471,10 @@
 
 	cbuf[0] = (tok_out.length >> 8) & 0xff;
 	cbuf[1] = tok_out.length & 0xff;
-	if (fwrite (cbuf, 1, 2, stdout) != 2
-	    || (fwrite (tok_out.value, 1, tok_out.length, stdout)
-		!= tok_out.length))
-	    error (1, errno, "fwrite failed");
+	buf_output(buf_to_net, cbuf, 2);
+	buf_output(buf_to_net, tok_out.value, tok_out.length);
+	if (buf_flush (buf_to_net, false))
+	    error (1, errno, "buf_flush failed");
     }
 
     switch_to_user ("GSSAPI", buf);
@@ -7471,7 +7482,8 @@
     if (credbuf != buf)
         free (credbuf);
 
-    printf ("I LOVE YOU\n");
+    buf_output0 (buf_to_net, "I LOVE YOU\n");
+    buf_flush (buf_to_net, true);
     fflush (stdout);
 }
 
