write_to_descriptor (zlib?)

From: Templar Viper (templarviper@hotmail.com)
Date: 08/06/02


I've recently installed zlib-compression, and everything was 
working quite nicely. However, I noticed that if the return 
button is pressed without input, I get the following result:

100h 100m 100v >   [return]

100h 100m 100v >   
100h 100m 100v > 

This was caused by a sloppy piece of code in game_loop 
anyways, but is this correct behaviour? The code:

/* Print prompts for other descriptors who had no other 
output */
    for (d = descriptor_list; d; d = d->next) {
      if (!d->has_prompt) {
    write_to_output(d, make_prompt(d)); <--- This should 
be write_to_descriptor(d, make_prompt(d));
    d->has_prompt = 1;

Zlib changed the format of write_to_descriptor, to three 

int write_to_descriptor(socket_t desc, const char *txt, 
size_t total)
(For the entire function, please take a look at the zlib 
patch located at
http://www.circlemud.org/pub/CircleMUD/contrib/code/utils/zlib2-bpl20.patch )

So, I converted the line to:

write_to_descriptor(d, make_prompt(d), strlen(make_prompt(d)));

However, sometimes, when this line is called, the mud
just stops sending. The character is still in the game, 
can move, fight, eat etc, but doesn't get the output. 
After a reconnect it is back to normal. Could anybody
help me please, I'm puzzled. 
Thank you.

   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |

This archive was generated by hypermail 2b30 : 06/25/03 PDT