[Cvsnt] Build 58b, the Eclipse CVS Client and cvs_flusherr()

Ullrich Pollaehne u.pollaehne at seeburger.de
Thu Apr 11 11:48:42 BST 2002


Hi John,

I would like to patch the code since I want to use CVSNT and eclipse but
I cannot find the code sequence in server.c. I do not have "else if
(server_active)" neither in the 57b code nor in the current repository.
I only find
if (server_active && supported_response ("MT"))
...
else
...

Could it be that you added the whole else-if?

Ullrich.

John Goehringer wrote:
> Hi,
>
> Been working with the Eclipse CVS client and the
> 1.11.1.3 builds. It's been reported that the newest
> Eclipse builds work ok with build 58b, but
> we found a problem with doing checkouts.
>
> The checkout from Eclipse finishes without reporting
> an error, but no files are fetched.
>
> Tracked this down to server.c/server_protocol()
> getting a very large count_needed from buf_copy_counted(),
> and never sending the output back to the client.
>
> The large count_needed is the int value of
> 'Mod-', as in Mod-time 9 Oct 1997 17:50:00 -0000.
>
> The Eclipse CVS client does not support the "MT"
> response, so in server.c/cvs_output_tagged()
> cvs_output() is called to send to the client. cvs_output()
> calls cvs_flusherr(), which calls buf_send_special_count().
>
> buf_send_special_count() prepends it's count as the first
> data packet, chains any existing data from the passed
> buffer to data->next, and calls buf_send_output().
>
> If there is data in the buf sent to buf_send_special_count(),
> it is sent over the pipe without the leading count, so
> server_protocol() ends up picking those first 4 bytes
> (Mod-) as the count, a large number.
>
> My patch is to add buf_send_counted (protocol) to
> cvs_flusherr() prior to buf_send_special_count (protocol, -2)
>
> so
>
>     else if (server_active)
>     {
>  /* make sure stderr is flushed before we send the flush count on the
>   * protocol pipe
>   */
>  fflush (stderr);
>  /* Send a special count to tell the parent to flush.  */
>  buf_send_special_count (protocol, -2);
>     }
>
> becomes
>
>     else if (server_active)
>     {
>  /* buf_send_special_count sends it's count only, so be sure to send
>   * any current data with it's count first.
>   */
>     buf_send_counted (protocol);
>  /* make sure stderr is flushed before we send the flush count on the
>   * protocol pipe
>   */
>  fflush (stderr);
>  /* Send a special count to tell the parent to flush.  */
>  buf_send_special_count (protocol, -2);
>     }
>
> John Goehringer
>
>
>
>
>
> _______________________________________________
> Cvsnt mailing list
> Cvsnt at cvsnt.org
> http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt


_______________________________________________
Cvsnt mailing list
Cvsnt at cvsnt.org
http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt



More information about the cvsnt mailing list