/* User-level compression toggle */ void do_compress( CHAR_DATA *ch, char *argument ) { if (!ch->desc) { send_to_char("What descriptor?!\n", ch); return; } if (!ch->desc->out_compress) { if (!IS_SET(ch->desc->flags, DESCRIPTOR_COMPRESS2) && str_cmp(argument, "force")) { send_to_char("Your client did not identify itself as supporting MCCP2.\n\r" "If you'd like to try anyways, type: compress force\n\r" "(If you get garbage, type compress again)",ch); return; } if(!compressStart(ch->desc)) { send_to_char("Failed.\n", ch); return; } send_to_char("Ok, compression enabled.\n", ch); } else { if (!compressEnd(ch->desc)) { send_to_char("Failed.\n", ch); return; } send_to_char("Ok, compression disabled.\n", ch); } }
void do_compress( CHAR_DATA * ch, const char *argument ) { if( !ch->desc ) { send_to_char( "What descriptor?!\n", ch ); return; } if( !ch->desc->mccp->out_compress ) { if( !compressStart( ch->desc ) ) send_to_char( "&RCompression failed to start.\n\r", ch ); else send_to_char( "&GOk, compression enabled.\n", ch ); } else { compressEnd( ch->desc ); ch->desc->can_compress = FALSE; send_to_char( "&ROk, compression disabled.\n", ch ); } }
/* Recover from a hotboot - load players */ void hotboot_recover( void ) { DESCRIPTOR_DATA *d = NULL; FILE *fp; char name[100]; char host[MAX_STRING_LENGTH]; int desc, room, dport, idle, dcompress, maxp = 0; bool fOld; fp = fopen( HOTBOOT_FILE, "r" ); if( !fp ) /* there are some descriptors open which will hang forever then ? */ { perror( "hotboot_recover: fopen" ); bug( "%s", "Hotboot file not found. Exitting." ); exit( 1 ); } unlink( HOTBOOT_FILE ); /* In case something crashes - doesn't prevent reading */ for( ;; ) { d = NULL; fscanf( fp, "%d %d %d %d %d %s %s\n", &dcompress, &desc, &room, &dport, &idle, name, host ); if( desc == -1 || feof( fp ) ) break; if( !str_cmp( name, "maxp" ) || !str_cmp( host, "maxp" ) ) { maxp = idle; continue; } /* * Write something, and check if it goes error-free */ if( !write_to_descriptor_old( desc, "\n\rThe Force swirls around you.\n\r", 0 ) ) { close( desc ); /* nope */ continue; } CREATE( d, DESCRIPTOR_DATA, 1 ); CREATE( d->mccp, MCCP, 1 ); d->next = NULL; d->descriptor = desc; d->connected = CON_GET_NAME; d->outsize = 2000; d->idle = 0; d->lines = 0; d->scrlen = 24; d->newstate = 0; d->prevcolor = 0x08; CREATE( d->outbuf, char, d->outsize ); d->host = STRALLOC( host ); d->port = dport; d->idle = idle; LINK( d, first_descriptor, last_descriptor, next, prev ); d->connected = CON_COPYOVER_RECOVER; /* negative so close_socket will cut them off */ d->can_compress = dcompress; if( d->can_compress ) compressStart( d ); /* * Now, find the pfile */ fOld = load_char_obj( d, name, FALSE, TRUE ); if( !fOld ) /* Player file not found?! */ { write_to_descriptor( d, "\n\rSomehow, your character was lost during hotboot. Contact the immortals ASAP.\n\r", 0 ); close_socket( d, FALSE ); } else /* ok! */ { write_to_descriptor( d, "Suddenly, you remember nothing as the Force continues into the Galaxy.\n\r", 0 ); d->character->in_room = get_room_index( room ); if( !d->character->in_room ) d->character->in_room = get_room_index( ROOM_VNUM_TEMPLE ); /* * Insert in the char_list */ LINK( d->character, first_char, last_char, next, prev ); char_to_room( d->character, d->character->in_room ); act( AT_MAGIC, "You appear in a swirl of the Force!", d->character, NULL, NULL, TO_CHAR ); act( AT_MAGIC, "$n appears in a swrrl of the Force!", d->character, NULL, NULL, TO_ROOM ); d->connected = CON_PLAYING; if( ++num_descriptors > sysdata.maxplayers ) sysdata.maxplayers = num_descriptors; #ifdef AUTO_AUTH check_auth_state( d->character ); /* new auth */ #endif } } FCLOSE( fp ); if( maxp > sysdata.maxplayers ) sysdata.maxplayers = maxp; log_string( "Hotboot recovery complete." ); return; }