12002-01-08 Perry Lorier <isomer@coders.net> 2 * Fixed the build system -- MAKEFILES is *not* a variable you can 3 just use in a makefile :) 4 * Added "Quit: " prefix to quit messages. 5 62001-10-14 Perry Lorier <isomer@coders.net> 7 * Minor fixes to the below 8 92001-09-21 Perry Lorier <isomer@coders.net> 10 * ircd/send.c and various: replace sendcmdto_flag_butone with 11 sendwallto_group_butone 12 132001-09-21 Vampire- <unknown> 14 * ircd/ircd_string.c: unique_name_vector round II. 15 162001-09-21 mbuna <mbuna@undernet.org> 17 * configure.in: Add support for darwin 18 192001-09-21 Perry Lorier <isomer@coders.net> 20 * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out 21 222001-09-20 Perry Lorier <isomer@coders.net> 23 24 * Pullups from 2.10.10.pl16 25 * Added some warnings, and the concept of rate limited snotices 26 272001-08-31 Kevin L Mitchell <klmitch@mit.edu> 28 29 * ircd/channel.c: use "%u" to format limit arguments; use 30 strtoul() to process limit arguments in a /mode command--note: 31 most clients seem to truncate the integer, probably because 32 they're using atoi, and perhaps signed ints 33 342001-08-17 Kevin L Mitchell <klmitch@mit.edu> 35 36 * ircd/numnicks.c: include stdlib.h for exit() 37 38 * ircd/ircd_log.c: include stdlib.h for exit() 39 40 * ircd/ircd_events.c: include stdlib.h for exit() 41 42 * ircd/s_stats.c: remove description of /stats v, since it's gone 43 44 * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of 45 /wallops to distinguish wallops from wallusers 46 47 * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't 48 in the "handshake" or "connecting" states--I think the latter will 49 never happen, but... 50 51 * doc/Authors: apply delete's Authors patch 52 53 * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on 54 Braden's version 55 56 * README: rewrite README 57 582001-07-31 Kevin L. Mitchell <klmitch@mit.edu> 59 60 * ircd/s_serv.c (server_estab): remove unused variable split 61 62 * ircd/parse.c: add mr_error to the parse table 63 64 * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from 65 unregistered connections--if IsUserPort() is true, the ERROR is 66 ignored, otherwise, the message is saved 67 682001-07-28 Kevin L. Mitchell <klmitch@mit.edu> 69 70 * ircd/m_kill.c (ms_kill): another minor typo *sigh* 71 72 * ircd/s_user.c (send_supported): oops, minor typo... 73 74 * ircd/s_user.c: implement send_supported() to send two ISUPPORT 75 messages containing our feature buffers; make register_user() use 76 send_supported() 77 78 * ircd/s_misc.c (exit_client): make sure not to give away a remote 79 server in the ERROR message sent to the client; if the killer is a 80 server, we substitute our name in its place 81 82 * ircd/m_version.c (m_version): use send_supported() to send the 83 ISUPPORT values to the user 84 85 * ircd/m_nick.c: shave nick collision kills here a bit, too, for 86 the same reasons as for m_kill.c 87 88 * ircd/m_kill.c: shave kills a bit so that the results look 89 exactly the same no matter where you are; if we didn't do this, it 90 would be possible to map the network by looking at the differences 91 between kills originating under various circumstances 92 93 * include/supported.h: split the features into two, so as to not 94 bust the parameter count when sending the features list 95 96 * include/s_user.h: declare new send_supported() function to send 97 the ISUPPORT information 98 992001-07-27 Kevin L. Mitchell <klmitch@mit.edu> 100 101 * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent 102 source-routed spoofing attacks; this is only available under 103 u2.10.11, so don't even bother, since no one but testers are using 104 the source base 105 1062001-07-25 Kevin L. Mitchell <klmitch@mit.edu> 107 108 * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default 109 110 * ircd/s_err.c: put in a . for reporting link version on /trace, 111 to match what /version does 112 1132001-07-21 Kevin L. Mitchell <klmitch@mit.edu> 114 115 * ircd/s_misc.c (exit_client): servers don't understand what the 116 numeric nick ERROR is supposed to mean, so they ignore error 117 messages, resulting in not knowing why we were rejected; use 118 sendcmdto_one for servers and sendrawto_one for clients 119 1202001-07-17 Kevin L. Mitchell <klmitch@mit.edu> 121 122 * ircd/m_burst.c (ms_burst): in the case of a modeless channel and 123 a nick collide, a bare BURST may be propagated; adjust the 124 enforced parameter count to accept the bare BURST 125 1262001-07-12 Kevin L. Mitchell <klmitch@mit.edu> 127 128 * ircd/s_bsd.c: mark a client as having been IP checked 129 130 * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded 131 second call to SetIPChecked() 132 1332001-07-11 Kevin L. Mitchell <klmitch@mit.edu> 134 135 * ircd/engine_poll.c: deal with POLLHUP properly (hopefully) 136 137 * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully) 138 1392001-07-09 Kevin L. Mitchell <klmitch@mit.edu> 140 141 * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd 142 sections so that if neither is used, the declaration of buf will 143 not elicit an "unused variable" warning under NetBSD 144 145 * ircd/m_map.c: include string.h to declare strcpy (fix warnings 146 on alpha) 147 148 * ircd/m_away.c: include string.h to declare strcpy/strlen (fix 149 warnings on alpha) 150 151 * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix 152 warnings on alpha) 153 154 * ircd/client.c: include string.h to declare memset (fix warnings 155 on alpha) 156 157 * ircd/channel.c: remove unused functions next_overlapped_ban, 158 del_banid, and is_deopped (fix warnings under -O1) 159 160 * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix 161 warnings on alpha) 162 1632001-06-29 Kevin L. Mitchell <klmitch@mit.edu> 164 165 * ircd/s_user.c (set_user_mode): clear the snomask if the user 166 isn't supposed to receive server notices anymore 167 168 * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE 169 170 * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking 171 installation prefix; default devpoll and kqueue to on (they get 172 turned off if the required headers aren't present) 173 174 * ircd/whocmds.c (do_who): use ircd_snprintf() instead of 175 sprintf_irc(); it's a bit hackish, but it'll do for now 176 177 * ircd/support.c: remove unused #include 178 179 * ircd/send.c: remove unused #include 180 181 * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc() 182 183 * ircd/s_serv.c: remove unused #include 184 185 * ircd/s_misc.c: use ircd_snprintf() and friends instead of 186 sprintf_irc() and friends 187 188 * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to 189 ircd/s_err.c, which is the only other file to refer to it 190 191 * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of 192 sprintf_irc() 193 194 * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of 195 sprintf_irc() 196 197 * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc() 198 199 * ircd/res.c: use ircd_snprintf() instead of sprintf_irc() 200 201 * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc() 202 203 * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc() 204 205 * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc() 206 207 * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc() 208 209 * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf() 210 instead of sprintf_irc() 211 212 * ircd/Makefile.in: remove sprintf_irc.c from sources list; run 213 make depend 214 215 * include/ircd_string.h: remove declaration of sprintf_irc() (what 216 was it doing here anyway?) 217 218 * include/sprintf_irc.h: removed unneeded source file 219 220 * ircd/sprintf_irc.c: removed unneeded source file 221 222 * ircd/s_debug.c (count_memory): remove some dead code 223 224 * ircd/s_auth.c: remove some dead code 225 226 * ircd/res.c (update_list): remove some dead code 227 228 * ircd/m_whowas.c: remove some dead code 229 230 * ircd/m_whois.c: remove some dead code 231 232 * ircd/m_who.c: remove some dead code 233 234 * ircd/m_wallusers.c: remove some dead code 235 236 * ircd/m_wallops.c: remove some dead code 237 238 * ircd/m_wallchops.c: remove some dead code 239 240 * ircd/m_version.c: remove some dead code 241 242 * ircd/m_userip.c: remove some dead code 243 244 * ircd/m_userhost.c: remove some dead code 245 246 * ircd/m_uping.c: remove some dead code 247 248 * ircd/m_trace.c: remove some dead code 249 250 * ircd/m_topic.c: remove some dead code 251 252 * ircd/m_tmpl.c: remove some dead code 253 254 * ircd/m_time.c: remove some dead code 255 256 * ircd/m_squit.c: remove some dead code 257 258 * ircd/m_silence.c: remove some dead code 259 260 * ircd/m_settime.c: remove some dead code 261 262 * ircd/m_set.c: remove some dead code 263 264 * ircd/m_server.c: remove some dead code 265 266 * ircd/m_rpong.c: remove some dead code 267 268 * ircd/m_rping.c: remove some dead code 269 270 * ircd/m_restart.c: remove some dead code 271 272 * ircd/m_reset.c: remove some dead code 273 274 * ircd/m_rehash.c: remove some dead code 275 276 * ircd/m_quit.c: remove some dead code 277 278 * ircd/m_proto.c: remove some dead code 279 280 * ircd/m_privs.c: remove some dead code 281 282 * ircd/m_privmsg.c: remove some dead code 283 284 * ircd/m_pong.c: remove some dead code 285 286 * ircd/m_ping.c: remove some dead code 287 288 * ircd/m_pass.c: remove some dead code 289 290 * ircd/m_part.c: remove some dead code 291 292 * ircd/m_opmode.c: remove some dead code 293 294 * ircd/m_oper.c: remove some dead code 295 296 * ircd/m_notice.c: remove some dead code 297 298 * ircd/m_nick.c: remove some dead code 299 300 * ircd/m_map.c: remove some dead code 301 302 * ircd/m_lusers.c: remove some dead code 303 304 * ircd/m_list.c: remove some dead code 305 306 * ircd/m_links.c: remove some dead code 307 308 * ircd/m_kill.c: remove some dead code 309 310 * ircd/m_kick.c: remove some dead code 311 312 * ircd/m_jupe.c: remove some dead code 313 314 * ircd/m_join.c: remove some dead code 315 316 * ircd/m_ison.c: remove some dead code 317 318 * ircd/m_invite.c: remove some dead code 319 320 * ircd/m_info.c: remove some dead code 321 322 * ircd/m_help.c: remove some dead code 323 324 * ircd/m_gline.c: remove some dead code 325 326 * ircd/m_get.c: remove some dead code 327 328 * ircd/m_error.c: remove some dead code 329 330 * ircd/m_endburst.c: remove some dead code 331 332 * ircd/m_die.c: remove some dead code 333 334 * ircd/m_desynch.c: remove some dead code 335 336 * ircd/m_destruct.c: remove some dead code 337 338 * ircd/m_defaults.c: remove some dead code 339 340 * ircd/m_create.c: remove some dead code, along with an #if 1 341 342 * ircd/m_cprivmsg.c: remove some dead code 343 344 * ircd/m_connect.c: remove some dead code 345 346 * ircd/m_close.c: remove some dead code 347 348 * ircd/m_clearmode.c: remove some dead code 349 350 * ircd/m_burst.c: remove some dead code 351 352 * ircd/m_away.c: remove some dead code 353 354 * ircd/m_admin.c: remove some dead code 355 356 * ircd/listener.c (accept_connection): remove some dead code 357 358 * ircd/ircd_reply.c (need_more_params): remove some dead code 359 360 * ircd/channel.c (add_banid): remove some dead code 361 362 * include/support.h: remove some dead code 363 364 * include/querycmds.h: remove some dead code 365 366 * doc/readme.chroot: document how to do chroot operation 367 3682001-06-28 Kevin L. Mitchell <klmitch@mit.edu> 369 370 * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to 371 force bin directory to be created if necessary prior to 372 installation; run make depend 373 374 * doc/Makefile.in (install): tune for VPATH installs by cd'ing to 375 the ${srcdir} 376 377 * Makefile.in: tune to detect Makefile.in changes in 378 subdirectories and to create installation directory indicated by 379 ${prefix} 380 381 * ircd/whocmds.c (count_users): routine to count the number of 382 users matching a given user@host mask 383 384 * ircd/s_err.c: add error messages for ERR_LONGMASK, 385 ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE 386 387 * ircd/m_gline.c: look for and advance past '!' flag on G-lines 388 from operators; only set GLINE_OPERFORCE flag if oper has the 389 PRIV_WIDE_GLINE privilege 390 391 * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the 392 maximum number of users a G-line can impact before it has to be 393 forced; OPER_WIDE_GLINE, to allow operators to use ! to force a 394 wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local 395 operators to use ! to force a wide G-line to be set 396 397 * ircd/gline.c: make make_gline() be called with separate user and 398 host arguments, and not call canon_userhost() directly; implement 399 gline_checkmask() to verify that a host mask is acceptable; move 400 BADCHAN check up in gline_add(), and check passed-in mask under 401 certain circumstances for acceptability; fix call to 402 sendto_opmask_butone() to handle separation of userhost into user 403 and host in gline_add(); update call to make_gline() 404 405 * ircd/client.c: use FEAT_OPER_WIDE_GLINE and 406 FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add 407 PRIV_WIDE_GLINE to privtab[] for client_report_privs() 408 409 * include/whocmds.h (count_users): declare routine to count users 410 matching a given user@host mask 411 412 * include/numeric.h: added three new error returns: ERR_LONGMASK 413 -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too 414 many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask 415 contains wildcards in the wrong places 416 417 * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT, 418 FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE 419 420 * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline() 421 to signal to gline_add() that the operator attempted to force the 422 G-line to be set 423 424 * include/client.h (PRIV_WIDE_GLINE): new privilege for operators 425 426 * doc/readme.gline: update to document new "!" prefix to a G-line 427 user@host mask 428 429 * doc/readme.features: document GLINEMAXUSERCOUNT, 430 OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE 431 432 * doc/example.conf: update to mention new features along with 433 their defaults 434 4352001-06-27 Kevin L. Mitchell <klmitch@mit.edu> 436 437 * doc/example.conf: updated example.conf from Braden 438 <dbtem@yahoo.com> 439 440 * include/supported.h: forward-port from pl15 441 4422001-06-25 Kevin L. Mitchell <klmitch@mit.edu> 443 444 * ircd/whocmds.c: include ircd_policy.h and implement 445 HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15 446 447 * ircd/m_whois.c: forward-port of the idle-time hiding code from 448 pl15; this also required passing parc into do_whois(), which also 449 meant passing parc into do_wilds()--*sigh* 450 451 * include/ircd_policy.h: add a couple more HEAD_IN_SAND 452 #define's--WHOIS_IDLETIME and WHO_HOPCOUNT 453 4542001-06-22 Kevin L. Mitchell <klmitch@mit.edu> 455 456 * tools/wrapper.c: add a wrapper program that can be used to 457 adjust file descriptor limits and root directories; program must 458 be run as root--NOT SETUID!--and given appropriate -u arguments 459 460 * doc/readme.log: documentation of how to configure logging 461 462 * doc/readme.features: documentation of each feature (except for 463 logging) 464 4652001-06-21 Kevin L. Mitchell <klmitch@mit.edu> 466 467 * Makefile.in (config): add a deprecation notice with a pointer to 468 tools/transition 469 470 * tools/transition: shell script to convert old compile-time 471 options into new compile-time options and appropriate F-lines 472 473 * tools/mkchroot: shell-script to prepare the chroot area by 474 copying over all the necessary libraries so they can be found 475 4762001-06-20 Kevin L. Mitchell <klmitch@mit.edu> 477 478 * INSTALL: partial update of INSTALL for u2.10.11 release... 479 4802001-06-14 Kevin L. Mitchell <klmitch@mit.edu> 481 482 * ircd/table_gen.c (makeTables): finally got tired of the 483 "overflow in implicit conversion" warning, so just got rid of it 484 by explicitly casting UCHAR_MAX to a (default) char; diffs show no 485 differences in the tables generated 486 4872001-06-11 Kevin L. Mitchell <klmitch@mit.edu> 488 489 * ircd/send.c (sendcmdto_match_butone): don't let the server crash 490 if a client is in the STAT_CONNECTING status 491 4922001-06-10 Kevin L. Mitchell <klmitch@mit.edu> 493 494 * ircd/send.c: remove unused vsendcmdto_one(), consolidating it 495 into sendcmdto_one(); define new sendcmdto_prio_one(), which 496 places the message into the priority queue 497 498 * ircd/s_user.c (hunt_server_prio_cmd): definition of 499 hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one() 500 instead of sendcmdto_one() 501 502 * ircd/m_settime.c: use sendcmdto_prio_one() and 503 hunt_server_prio_cmd() to send SETTIME 504 505 * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME 506 507 * include/send.h: removed declaration for unused vsendcmdto_one(); 508 added a declaration for sendcmdto_prio_one() 509 510 * include/s_user.h: declare hunt_server_prio_cmd(), which calls 511 sendcmdto_prio_one() 512 513 * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be 514 put in the server's priority queue, too... 515 516 * ircd/ircd.c: don't check LPATH for accessibility at all 517 5182001-06-08 Kevin L. Mitchell <klmitch@mit.edu> 519 520 * ircd/s_serv.c (server_estab): send a +h flag in our SERVER 521 command if we're configured as a hub; send individual server flags 522 in SERVER commands 523 524 * ircd/s_bsd.c (completed_connection): send a +h flag in our 525 SERVER command if we're configured as a hub 526 527 * ircd/m_server.c: implement parv[7] as a mode-like string; +h 528 sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE 529 flag for a server; +hs sets both flags; also modify CMD_SERVER 530 format string to send the flags 531 532 * include/client.h: define two new flags, FLAGS_HUB and 533 FLAGS_SERVICE to mark services and hubs as such; define testing 534 macros, setting macros 535 536 * ircd/s_user.c: remove deprecated struct Gline* argument to 537 register_user(); remove GLINE rebroadcast; do not send GLINE 538 acknowledgement parameter to NICK; do not look for GLINE 539 acknowledgement parameter to NICK while parsing 540 541 * ircd/s_serv.c (server_estab): remove deprecated struct Jupe* 542 argument to server_estab(); do not send JUPE/GLINE acknowledgement 543 parameters for SERVER or NICK 544 545 * ircd/m_user.c (m_user): remove deprecated argument to 546 register_user() 547 548 * ircd/m_server.c: remove deprecated argument to server_estab(); 549 remove documentation comment regarding JUPE acknowledgement 550 parameter to SERVER; remove JUPE rebroadcast 551 552 * ircd/m_pong.c (mr_pong): remove deprecated argument to 553 register_user() 554 555 * ircd/m_nick.c: remove documentation comment regarding GLINE 556 acknowledgement parameter to NICK 557 558 * ircd/jupe.c: use user's real name in JUPE server notices if 559 HEAD_IN_SAND_SNOTICES is defined 560 561 * ircd/ircd.c: remove deprecated chroot() code; remove deprecated 562 setuid code; correct ancient DEBUG vs DEBUGMODE typo 563 564 * ircd/gline.c: use user's real name in GLINE server notices if 565 HEAD_IN_SAND_SNOTICES is defined 566 567 * ircd/channel.c (modebuf_flush_int): make apparent source be 568 local server, not oper's server; use user's real name in hack 569 notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined 570 571 * include/s_user.h: remove struct Gline pre-declaration; remove 572 deprecated struct Gline argument from register_user() 573 574 * include/s_serv.h: remove struct Jupe pre-declaration; remove 575 deprecated struct Jupe argument from server_estab() 576 5772001-06-07 Kevin L. Mitchell <klmitch@mit.edu> 578 579 * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the 580 changes required to control remote stats 581 582 * ircd/s_numeric.c (do_numeric): rewrite numeric origins if 583 recipient is not an operator and HEAD_IN_SAND_REWRITE is defined 584 [forward-port from pl15] 585 586 * ircd/m_whowas.c (m_whowas): report server name only if requester 587 is an operator [forward-port from pl15] 588 589 * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports 590 my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument 591 and obtain the report from the user's server [forward-port from 592 pl15] 593 594 * ircd/m_who.c: add missing include for ircd_policy.h 595 [forward-port from pl15] 596 597 * ircd/m_version.c (m_version): require oper access for remote 598 /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] 599 600 * ircd/m_time.c (m_time): require oper access for remote /time if 601 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] 602 603 * ircd/m_stats.c: pass extra argument to hunt_stats(); correct 604 missing semicolon [forward-port from pl15] 605 606 * ircd/m_nick.c (ms_nick): hide the origin of certain collision 607 kills [forward-port from pl15] 608 609 * ircd/m_motd.c (m_motd): require oper access for remote /motd if 610 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] 611 612 * ircd/m_lusers.c (m_lusers): require oper access for remote 613 /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] 614 615 * ircd/m_burst.c (ms_burst): server-added bans are stored using 616 local server name, to hide remote server names; modes also are to 617 originate from the local server [forward-port from pl15] 618 619 * ircd/m_admin.c (m_admin): require oper access for remote /admin 620 if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] 621 622 * ircd/channel.c (add_banid): if a server is adding a ban, use my 623 server name to hide the remote server's name [forward-port from 624 pl15] 625 626 * ircd/Makefile.in: ran make depend 627 628 * include/s_stats.h: hunt_stats() has to have an extra argument to 629 support the forward-port from pl15 630 631 * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add 632 HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15] 633 634 * ircd/engine_poll.c (engine_loop): remove bogus assert that I 635 forgot to check in the events branch 636 6372001-06-06 Kevin L. Mitchell <klmitch@mit.edu> 638 639 * ircd/res.c (init_resolver): don't start DNS expires with a 0 640 relative timeout--if the server starts slow, timeouts could be 641 messy...there's probably a better solution, but this'll do for now 642 643 * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris 644 headers very well; include stropts.h; define an os_set_tos() 645 646 * ircd/os_generic.c (os_set_tos): added an os_set_tos() for 647 os_generic.c 648 649 * ircd/ircd.c: if there are no C-lines, we don't want to have a 650 timer that expires at the absolute time of 0--it kinda blocks all 651 the other timers! 652 653 * ircd/engine_devpoll.c: some includes for open(); declare errcode 654 and codesize in engine_loop() 655 656 * ircd/list.c (free_client): remove bogus check on timer active 657 flag 658 659 * ircd/s_auth.c: pull out destruction code in 660 auth_timeout_request() into an externally-visible 661 destroy_auth_request(); manage cli_auth pointer in client 662 structure; use it for an extra assertion check 663 664 * ircd/list.c: include s_auth.h for destroy_auth_request(); add 665 debugging notices to show flow when deallocating 666 connections/clients; call destroy_auth_request() when free'ing a 667 client that has an auth outstanding; don't free the connection if 668 the process timer is unmarked but still active 669 670 * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator 671 and reset it before calling the event handler for an ET_DESTROY 672 event 673 674 * include/s_auth.h (destroy_auth_request): declare 675 destroy_auth_request(), which can be used to destroy an 676 outstanding auth request if a client socket goes away before the 677 auth exchange is completed 678 679 * include/ircd_events.h: add an active flag to keep track of 680 whether or not particular generators are active, for the 681 convenience of functions using the API 682 683 * include/client.h: add a pointer for auth requests to struct 684 Connection so we can kill outstanding auth requests if a client 685 socket closes unexpectedly 686 687 * ircd/s_bsd.c: cli_connect() could become 0 during the course of 688 the sock or timer callback; take that into account in the assert 689 690 * ircd/list.c: add magic number checking and setting--magic 691 numbers are zero'd on frees to detect double-frees; add back 692 setting of cli_from() to 0 to break the back-link from the struct 693 Connection (duh) 694 695 * ircd/ircd.c: set me's magic number correctly 696 697 * include/client.h: define magic numbers and accessor/verifier 698 macros 699 700 * ircd/list.c: assert that dealloc_client() is called with 701 cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling 702 dealloc_client(); don't mess with cli_from(cptr) 703 704 * ircd/s_bsd.c: only attempt to dealloc a connection if the 705 associated client has already been destroyed, or at least delinked 706 7072001-06-05 Kevin L. Mitchell <klmitch@mit.edu> 708 709 * ircd/list.c (free_client): only try to delete the socket when 710 the fd hasn't already been closed, avoiding a double-free 711 712 * ircd/list.c (free_connection): make sure the client is really 713 gone before doing away with the connection 714 715 * ircd/s_bsd.c: record that socket has been added in con_freeflag 716 field; queue a socket_del() as soon as the socket is close()'d; 717 use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear 718 FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(), 719 then dealloc the connection if safe; mark socket as dead when 720 there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry 721 to client_timer_callback(); dealloc connection if safe upon 722 ET_DESTROY event in client_timer_callback() 723 724 * ircd/list.c: use con_freeflag instead of con_timer; only dealloc 725 the connection if both socket and timer have been destroyed; 726 destroy both socket and timer explicitly and carefully 727 728 * include/client.h: replace the con_timer field with a 729 con_freeflag field, to indicate what still needs freeing; define 730 the freeflags 731 732 * ircd/engine_select.c (engine_loop): duh...sockList[i] could 733 become 0 734 735 * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could 736 become 0 737 738 * ircd/s_bsd.c: add some extra assertions to try to track down a 739 corruption problem 740 741 * ircd/engine_select.c (engine_loop): add an extra assert to try 742 to track down a corruption problem 743 744 * ircd/engine_poll.c (engine_loop): add an extra assert to try to 745 track down a corruption problem 746 747 * ircd/engine_kqueue.c (engine_loop): add an extra assert to try 748 to track down a corruption problem 749 750 * ircd/engine_devpoll.c (engine_loop): skip slots that have become 751 empty during processing; add an extra assert to try to track down 752 a corruption problem 753 754 * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted 755 entries 756 7572001-06-04 Kevin L. Mitchell <klmitch@mit.edu> 758 759 * ircd/s_bsd.c (client_sock_callback): client is no longer 760 blocked, so we must mark it as unblocked 761 762 * ircd/engine_select.c: add Debug() calls galore; add handling for 763 SS_NOTSOCK; use a dummy sock variable to keep things from 764 disappearing on us; correct timeout calculation; update nfds for 765 efficiency 766 767 * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE); 768 remove a spurious "if (sock)" which will always be true; update 769 nfds for efficiency 770 771 * ircd/engine_kqueue.c: add Debug() calls galore; add handling for 772 SS_NOTSOCK (just in case); correct timeout calculation 773 774 * ircd/engine_devpoll.c: add Debug() calls galore; add handling 775 for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling 776 777 * include/s_debug.h (DEBUG_ENGINE): add new debugging level; 778 pretty-indent numbers 779 780 * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK 781 case--it's not a socket; the check for writability is most likely 782 not needed, but present for completeness 783 7842001-05-24 Kevin L. Mitchell <klmitch@mit.edu> 785 786 * ircd/s_bsd.c: add Debug messages; call read_packet() even if the 787 no newline flag is set; call read_packet() when the timer expires, 788 regardless of what's in the buffer--read_packet() should be able 789 to deal properly 790 791 * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE 792 sent to clients to include the client nickname (duh) 793 794 * ircd/ircd_events.c: don't destroy a timer if it's already marked 795 for destruction; replace a missing ! in socket_del() 796 797 * ircd/engine_poll.c (engine_loop): reference a temporary variable 798 so we don't have to worry about sockList[i] going away 799 800 * ircd/s_bsd.c (client_sock_callback): add Debug messages 801 802 * ircd/s_auth.c: add Debug messages all over the place 803 804 * ircd/ircd_events.c: add and edit some Debug messages; add a list 805 of routines to convert some of the enums and flags from numbers 806 into human-readable strings for the Debug messages 807 808 * ircd/engine_poll.c: hack some Debug messages to use the new name 809 conversion routines in ircd_events.c; add an extra assert for a 810 condition that shouldn't ever happen; apparently recv() can return 811 EAGAIN when poll() returns readable--I wonder why... 812 813 * include/ircd_events.h: declare some helper routines under 814 DEBUGMODE 815 8162001-05-23 Kevin L. Mitchell <klmitch@mit.edu> 817 818 * ircd/s_bsd.c (client_sock_callback): add an extra assertion 819 check 820 821 * ircd/s_auth.c: add more Debug messages 822 823 * ircd/list.c (make_client): add an extra assertion check 824 825 * ircd/ircd_events.c (socket_events): don't call the engine events 826 changer if we haven't actually made any changes to the event mask 827 828 * ircd/uping.c: add some Debug messages 829 830 * ircd/s_stats.c: document new /STATS e 831 832 * ircd/s_err.c: add RPL_STATSENGINE to report the engine name 833 834 * ircd/s_bsd.c: remove static client_timer variable; in 835 read_packet(), if there's still data in the client's recvQ after 836 parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case 837 of client_sock_callback to handle destroying the timer properly; 838 rewrote client_timer_callback from scratch to be called on an 839 individual client 840 841 * ircd/m_stats.c: add /STATS e to report the engine name 842 843 * ircd/list.c: deal with con_timer field in struct Connection 844 properly; correct a core-level bug in remove_client_from_list--if 845 the client is the only one in the list, we try to update 846 GlobalClientList's cli_prev pointer--not good 847 848 * ircd/ircd.c: remove call to init_client_timer() 849 850 * ircd/engine_poll.c: made Debug messages more uniform by 851 prepending "poll:" to them all; corrected an off-by-one error that 852 caused poll_count to be 1 less than the actual count and removed 853 my work-around; added Debug messages to indicate which socket is 854 being checked and what the results are 855 856 * ircd/Makefile.in: ran a make depend 857 858 * include/s_bsd.h: remove init_client_timer(), since we're doing 859 it differently now 860 861 * include/numeric.h (RPL_STATSENGINE): a stats reply to report the 862 engine name 863 864 * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e 865 reports for non-opers 866 867 * include/client.h: add con_timer and con_proc fields to struct 868 Connection and define accessor macros--con_timer marks that 869 con_proc contains a valid timer, and con_proc is used to pace user 870 data 871 872 * ircd/s_bsd.c (close_connection): let free_client() destroy the 873 socket 874 875 * ircd/s_auth.c (start_auth): add a Debug call to indicate when 876 auth has begun on a client 877 878 * ircd/ircd_events.c: ensure that event_execute() is called with a 879 non-NULL event; modify event_add() macro to properly zero list 880 bits; modify gen_dequeue() to not try to clip it out of a list 881 it's already been clipped out of; change signal socket 882 initialization to use state SS_NOTSOCK; permit timeout values of 883 0 in add_timer(); add many Debug calls; change socket_del() and 884 timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in 885 timer_run() instead of GEN_DESTROY so that event_generate() will 886 pass on the events; remove the switch and replace with a simpler 887 if-then-else tree in timer_run(); don't allow destroyed sockets to 888 be destroyed again, nor their states or event masks to be changed 889 890 * ircd/ircd.c: initialize "running" to 1 891 892 * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug 893 messages all over the place; fix a counting problem in 894 engine_add(); turn wait into a signed integer and set it to -1 895 only if timer_next() returns 0; adjust wait time to be relative; 896 don't call gen_ref_dec() if socket disappeared while we were 897 processing it 898 899 * include/ircd_events.h: the pipe for signals is not a socket, so 900 we must mark it as such--added SS_NOTSOCK for that special socket; 901 events won't be generated if GEN_DESTROY is on, so add GEN_MARKED 902 for the benefit of timer_run() 903 904 * configure.in: add --enable-pedantic and --enable-warnings to 905 turn on (and off) -Wall -pedantic in CFLAGS 906 9072001-05-21 Kevin L. Mitchell <klmitch@mit.edu> 908 909 * ircd/s_conf.c: change "s_addr" element accesses to "address" 910 element accesses 911 912 * include/s_conf.h: on some systems, "s_addr" is a macro; use 913 "address" instead 914 9152001-05-18 Kevin L. Mitchell <klmitch@mit.edu> 916 917 * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns 918 void in this file; add a missing semi-colon; declare errcode, 919 codesize 920 921 * ircd/uping.c (uping_sender_callback): it's pptr, not uping 922 923 * ircd/s_user.c (register_user): comment out spurious reference to 924 nextping 925 926 * ircd/s_serv.c (server_estab): comment out spurious reference to 927 nextping 928 929 * ircd/s_conf.c (read_configuration_file): comment out spurious 930 reference to nextping and nextconnect 931 932 * ircd/s_bsd.c: comment out some spurious references to formerly 933 global (now non-existant) variables; correct a couple of typos 934 935 * ircd/s_auth.c: pre-declare some functions referenced in the 936 callback; correct a typo 937 938 * ircd/res.c (start_resolver): pass errno value of ENFILE 939 940 * ircd/listener.c (accept_connection): you know your API is messed 941 up when...variables that shouldn't have been global crop up in 942 other files 943 944 * ircd/list.c (free_client): substitution of == for = 945 946 * ircd/ircd_signal.c: include assert.h for assertion checking; 947 check ev_data() to find out what signal generated event 948 949 * ircd/ircd_events.c: some references to the variable "timer" 950 should have been references to the variable "ptr" 951 952 * ircd/engine_select.c: it's struct fd_set, not struct fdset; 953 ev_timer(ev) is already a timer pointer; declare codesize as a 954 size_t to correct signedness issue; use timer_next(), not 955 time_next() 956 957 * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer; 958 select fd out of struct pollfd in assertion checking; declare 959 errcode and codesize; use timer_next(), not time_next() 960 961 * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer; 962 use function timer_next(), not time_next() 963 964 * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer; 965 use function timer_next(), not time_next() 966 967 * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of 968 compiled sources; do make depend 969 970 * include/list.h: pre-declare struct Connection 971 972 * include/ircd_events.h (gen_ref_inc): cast to the right structure 973 name 974 975 * include/s_auth.h: duh; missing */ 976 9772001-05-10 Kevin L. Mitchell <klmitch@mit.edu> 978 979 * ircd/send.c: update write events status after sending data or 980 accumulating data to be sent 981 982 * ircd/m_list.c (m_list): update write events status after 983 canceling a running /list 984 985 * ircd/channel.c (list_next_channels): update write events status 986 after listing a few channels 987 988 * ircd/s_bsd.c: extensive changes to update to new events model; 989 remove on_write_unblocked() and the two implementations of 990 read_message(), which have been deprecated by this change 991 992 * ircd/s_auth.c: set the socket events we're interested in for 993 clients; simplify some logic that does the connect_nonb followed 994 by the socket_add 995 996 * ircd/list.c: define free_connection() to free a connection 997 that's become freeable once the struct Socket has been 998 deallocated; fix up free_client() to take this new behavior into 999 account 1000 1001 * ircd/ircd.c: call init_client_timer() 1002 1003 * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable 1004 to register connect-in-progress with events system; declare 1005 init_client_timer() (HACK!) to preserve rate-limiting behavior 1006 1007 * include/list.h: declare new free_connection() 1008 1009 * include/client.h: add a struct Socket to struct Connection 1010 10112001-05-09 Kevin L. Mitchell <klmitch@mit.edu> 1012 1013 * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and 1014 SIGTERM into event callbacks; perform the actions in the 1015 callbacks, since they're not called in the context of the signal; 1016 set up the signal callbacks in the event engine 1017 1018 * ircd/ircd_events.c (signal_callback): we're supposed to look for 1019 a specific signal; don't generate an event if there is no signal 1020 structure for it 1021 1022 * ircd/ircd.c: nuke nextconnect and nextping and replace them with 1023 connect_timer and ping_timer; massage try_connections() and 1024 check_pings() into timer callbacks that re-add themselves at the 1025 right time; remove ircd.c's "event_loop()"; initialize the event 1026 system and the connect_timer and ping_timer 1027 1028 * ircd/uping.c: correct a couple more typos 1029 1030 * ircd/s_auth.c: rework to use new events system 1031 1032 * ircd/os_solaris.c (os_connect_nonb): update to new interface 1033 1034 * ircd/os_openbsd.c (os_connect_nonb): update to new interface 1035 1036 * ircd/os_linux.c (os_connect_nonb): update to new interface 1037 1038 * ircd/os_generic.c (os_connect_nonb): update to new interface 1039 1040 * ircd/os_bsd.c (os_connect_nonb): update to new interface 1041 1042 * include/s_auth.h: remove deprecated members of struct 1043 AuthRequest, replacing them with struct Socket and struct Timer 1044 structures; add flags to indicate when these structures have been 1045 released by the event system; remove the deprecated 1046 timeout_auth_queries() 1047 1048 * include/ircd_osdep.h (os_connect_nonb): connect could complete 1049 immediately, so change the interface to handle that possibility 1050 1051 * ircd/uping.c (uping_server): noticed and corrected a typo 1052 1053 * ircd/listener.c: set up to use ircd_event's struct Socket by 1054 adding an socket_add() call to inetport(), replacing 1055 free_listener() with socket_del() in close_listener(), and 1056 reworking accept_connection to be called as the callback 1057 1058 * ircd/ircd.c: add a call to IPcheck_init() 1059 1060 * ircd/IPcheck.c: remove IPcheck_expire(); rework 1061 ip_registry_expire() to be called from a timer; write 1062 IPcheck_init() to set up the expiration timer (hard-coded for a 1063 60-second expiration time) 1064 1065 * include/listener.h: add a struct Socket to the struct Listener; 1066 remove accept_connection() 1067 1068 * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire() 1069 10702001-05-08 Kevin L. Mitchell <klmitch@mit.edu> 1071 1072 * ircd/ircd_events.c: include config.h; use USE_KQUEUE and 1073 USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H 1074 1075 * ircd/engine_select.c: include config.h; set FD_SETSIZE to 1076 MAXCONNECTIONS, not IRCD_FD_SETSIZE... 1077 1078 * ircd/engine_poll.c: include config.h 1079 1080 * ircd/engine_kqueue.c: include config.h 1081 1082 * ircd/engine_devpoll.c: include config.h 1083 1084 * ircd/Makefile.in: include engine sources in compilation and make 1085 depend steps 1086 1087 * configure.in: add checks for enabling the /dev/poll- and 1088 kqueue-based engines 1089 1090 * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE 1091 1092 * ircd/Makefile.in: work in the engine sources 1093 10942001-05-07 Kevin L. Mitchell <klmitch@mit.edu> 1095 1096 * ircd/m_settime.c: include ircd_snprintf.h 1097 1098 * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting 1099 parens around a construct that had both || and && 1100 1101 * ircd/chkconf.c: #include "config.h" to get some important 1102 definitions 1103 1104 * ircd/Makefile.in: revamp ircd makefile for new build system 1105 1106 * doc/Makefile.in: revamp doc makefile for new build system 1107 1108 * config/*: Removed old build system files 1109 1110 * stamp-h.in: a stamp file 1111 1112 * install-sh: install-sh for new build system 1113 1114 * configure.in: configure.in for new build system 1115 1116 * configure: configure script for new build system (built by 1117 autoconf) 1118 1119 * config.sub: config.sub for new build system 1120 1121 * config.h.in: config.h.in for new build system (built by 1122 autoheader) 1123 1124 * config.guess: config.guess for new build system 1125 1126 * aclocal.m4: aclocal.m4 for new build system (built by aclocal 1127 1.4) 1128 1129 * acinclude.m4: aclocal.m4 macros for new build system 1130 1131 * acconfig.h: config.h skeleton for new build system 1132 1133 * Makefile.in: modify for new build system 1134 11352001-05-01 Kevin L. Mitchell <klmitch@mit.edu> 1136 1137 * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT 1138 1139 * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT 1140 1141 * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT 1142 11432001-05-01 Perry Lorier <Isomer@coders.net> 1144 * doc/iauth.doc: Protocol for iauth server. (from hybrid). 1145 * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock 1146 when you have far far too many sockets in use. 1147 * {include,ircd}/iauth.c: A start on iauth support. 1148 11492001-05-01 Perry Lorier <Isomer@coders.net> 1150 * ircd/s_err.c: Suggested wording change. 1151 * ircd/s_user.c: Users aren't target limited against +k users. 1152 * ircd/chkconf.c: Made it compile again, who knows if it works, but 1153 now I can at least make install 1154 * various: Cleanups on m_*.c files. 1155 1156 11572001-04-23 Kevin L. Mitchell <klmitch@mit.edu> 1158 1159 * ircd/s_misc.c (exit_client): make netsplit server notice say the 1160 right thing 1161 1162 * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS 1163 change to make Khaled happy... 1164 1165 * ircd/m_whois.c (do_whois): pull-up of m_whois() fix 1166 (do_whois): duh... 1167 11682001-04-21 Kevin L. Mitchell <klmitch@mit.edu> 1169 1170 * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's 1171 turned up no more bugs 1172 1173 * ircd/ircd.c: use /* */ comments instead of // comments--all the 1174 world's not gcc :( 1175 1176 * ircd/s_conf.c (conf_add_server): use /* */ comments instead of 1177 // comments--all the world's not gcc :( 1178 1179 * ircd/runmalloc.c: finally garbage-collect unused file 1180 1181 * include/runmalloc.h: finally garbage-collect unused file 1182 1183 * ircd/<multiple files>: addition of '#include "config.h"' before 1184 all other includes in most .c files 1185 1186 * include/<multiple files>: remove includes of config.h, which are 1187 now going into the raw .c files 1188 11892001-04-20 Kevin L. Mitchell <klmitch@mit.edu> 1190 1191 * ircd/m_whois.c (do_whois): display proper server name if the 1192 user is looking up himself 1193 1194 * ircd/m_who.c (m_who): disable match by servername or display of 1195 server names by non-opers 1196 1197 * include/ircd_policy.h: add define for 1198 HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15 1199 of CFV 165 1200 12012001-04-18 Kevin L. Mitchell <klmitch@mit.edu> 1202 1203 * ircd/s_conf.c: keep the $R in memory so we can see it clearly 1204 when we do a /stats k 1205 1206 * ircd/s_user.c (set_user_mode): pull-up of changes to prevent 1207 users from turning on +s and +g 1208 1209 * ircd/s_misc.c (exit_client): pull-up of changes to turn off 1210 net.split notice 1211 1212 * ircd/parse.c: pull-up of changes to disable /trace, /links, and 1213 /map for users 1214 1215 * ircd/m_whois.c (do_whois): pull-up of server name masking for 1216 /whois 1217 1218 * ircd/m_user.c (m_user): removal of umode and snomask defaulting 1219 functions, pull-up 1220 1221 * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff 1222 1223 * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect() 1224 1225 * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect() 1226 1227 * ircd/channel.c (channel_modes): pull-up of channel key display 1228 as * 1229 1230 * include/ircd_policy.h: pull-up of ircd_policy.h 1231 1232 * include/client.h: pull-up of Set/ClearServNotice() 1233 1234 * ircd/gline.c (do_gline): report client name in G-line message 1235 (pull-up) 1236 1237 * ircd/s_user.c (register_user): pull-up--show IP address in some 1238 server notices dealing only with users; report which connection 1239 class has filled up 1240 1241 * ircd/s_stats.c (report_deny_list): use conf->flags & 1242 DENY_FLAGS_IP insteaf of conf->ip_kill 1243 1244 * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP 1245 insteaf of conf->ip_kill 1246 1247 * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of 1248 K-line by real name 1249 1250 * include/s_conf.h: use a flags field in struct DenyConf; define 1251 DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for 1252 pull-up of K-line by real name 1253 1254 * ircd/m_trace.c: pull-up of IP show for user connections 1255 1256 * doc/example.conf: pull-up of the realname K-line documentation 1257 1258 * ircd/ircd.c: forward port of pid file advisory locking mechanism 1259 12602001-04-16 Kevin L. Mitchell <klmitch@mit.edu> 1261 1262 * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to 1263 all servers, rather than to only servers that have +w/+g/whatever 1264 users on them; among other things, this removes that atrocity 1265 known as sentalong[] from this function 1266 1267 * ircd/m_admin.c: must include ircd.h to declare "me"; must 1268 include hash.h to declare FindUser() 1269 1270 * ircd/m_wallusers.c: implementation of WALLUSERS 1271 1272 * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers 1273 1274 * ircd/m_wallops.c: only send WALLOPS to opers 1275 1276 * ircd/parse.c: add WALLUSERS command to parser table 1277 1278 * include/handlers.h: declare wallusers handlers 1279 1280 * include/msg.h: add WALLUSERS command 1281 1282 * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with 1283 flag, send only to appropriate opers 1284 12852001-04-13 Kevin L. Mitchell <klmitch@mit.edu> 1286 1287 * ircd/uping.c: refit to use the new events interface 1288 1289 * ircd/res.c: refit to use the new events interface 1290 1291 * ircd/ircd_events.c: create timer_chg(), which permits a 1292 (non-periodic) timer's expire time to be modified; change the 1293 logic in timer_run() so that timers that were re-added while the 1294 event was being processed will not be destroyed prematurely 1295 1296 * include/uping.h: include the events header, declare some extra 1297 fields in struct UPing, remove timeout value, and define some 1298 flags for marking which cleanup items have yet to be done 1299 1300 * include/ircd_events.h: add a prototype for timer_chg() to change 1301 the expire time of a running timer 1302 13032001-03-13 Joseph Bongaarts <foxxe@wtfs.net> 1304 * ircd/os_openbsd.c: Tweaked the openbsd hack a bit. 1305 13062001-03-07 Joseph Bongaarts <foxxe@wtfs.net> 1307 1308 * config/configure.in: Add check for OpenBSD 1309 1310 * ircd/os_openbsd.c: Add seperate os dep file for openbsd which 1311 differs from generic BSD, particularly in its handling of 1312 _XOPEN_SOURCE. 1313 13142001-02-12 Kevin L. Mitchell <klmitch@mit.edu> 1315 1316 * ircd/m_gline.c (ms_gline): propagate a G-line that happened to 1317 have been added by a U-lined server, rather than going through the 1318 activate/deactivate logic; propagate G-line removals by U-lined 1319 servers as well 1320 1321 * ircd/gline.c: rename propagate_gline() to gline_propagate(); 1322 make gline_propagate() return an int 0 (convenience return); only 1323 update lastmod in gline_activate() and gline_deactivate() if the 1324 current lastmod is non-zero, since 0 lastmod is our flag of a 1325 U-lined server having added a G-line 1326 1327 * include/gline.h (gline_propagate): exporting the G-line 1328 propagation function 1329 1330 * ircd/m_list.c (m_list): duh; permit explicit channel name 1331 specification only when /list gets two arguments ("Kev 1332 #wasteland") rather than when /list gets more than two 1333 arguments--nice braino 1334 13352001-01-29 Thomas Helvey <twhelvey1@home.com> 1336 1337 * ircd/ircd_reply.c (need_more_params): fix bug that allowed 1338 unregistered clients to spam opers with protocol violation 1339 messages. Note: the bugfix may have eliminated some useful 1340 protocol violation messages. 1341 Please send protocol violation messages explicitly from the 1342 functions they are discovered in, you have much better context 1343 for the error there and it helps to document the behavior of the 1344 server. This was also a design bug in that it violated the 1345 "A function should do one thing" heuristic. Patching this one 1346 would have resulted in a continuous spawning of other bugs over 1347 the next 3 years, so I killed it. Check around for stuff this 1348 broke and readd the calls to protocol_violation in the functions 1349 that need to send the message. 1350 13512001-01-29 Kevin L. Mitchell <klmitch@mit.edu> 1352 1353 * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban 1354 already existed, then the logic would (attempt to) skip it, but 1355 would not free the ban string; now the ban string is free'd and 1356 the ban count is decremented, releasing the ban for use 1357 1358 * ircd/s_user.c: make send_umode_out() take a prop argument 1359 instead of testing for the PRIV_PROPAGATE privilege itself; fix 1360 set_umode() to use this new argument, calculating it before 1361 calculating the new privileges for a -o'd user 1362 1363 * ircd/m_oper.c (m_oper): pass the new prop argument to 1364 send_umode_out() 1365 1366 * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans 1367 that we're not actually going to add because they already exist; 1368 test that particular bit before adding to the linked list 1369 1370 * include/s_user.h: add a prop argument to send_umode_out() to 1371 indicate whether or not to propagate the user mode 1372 13732001-01-24 Kevin L. Mitchell <klmitch@mit.edu> 1374 1375 * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that 1376 it would have written; upper-bound the number to prevent overflows 1377 by proxy; also, tune buffer size given to ircd_vsnprintf() to take 1378 into account the fact that ircd_vsnprintf() already takes the 1379 terminal \0 into account 1380 13812001-01-22 Kevin L. Mitchell <klmitch@mit.edu> 1382 1383 * ircd/msgq.c: add an incredibly ugly hack to attempt to track 1384 down an apparent buffer overflow; remove msgq_map(), since it's no 1385 longer used anywhere; slight tweaks to prevent off-by-one errors, 1386 but these can't explain the problems we've seen 1387 1388 * include/msgq.h: remove msgq_map(), since it's no longer used 1389 anywhere 1390 13912001-01-18 Kevin L. Mitchell <klmitch@mit.edu> 1392 1393 * ircd/s_user.c (set_nick_name): call client_set_privs() after 1394 parsing user modes 1395 13962001-01-17 Kevin L. Mitchell <klmitch@mit.edu> 1397 1398 * ircd/s_bsd.c (read_message): fix a typo in the select version of 1399 read_message() 1400 1401 * ircd/whowas.c (whowas_free): MyFree() is a macro that expects 1402 its argument to be an lvalue, which means we can't use 1403 whowas_clean()'s handy-dandy "return ww" feature 1404 1405 * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops... 1406 14072001-01-16 Kevin L. Mitchell <klmitch@mit.edu> 1408 1409 * ircd/ircd_events.c (timer_run): it's possible that the timer got 1410 deleted during the callback processing, so don't go to the bother 1411 of requeuing it if the destroy flag is set 1412 1413 * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE 1414 out of config.h if this is a *BSD; include errno.h (oops); 1415 decrement error count after an hour using a timer; use FD_SETSIZE 1416 constant instead of IRCD_FD_SETSIZE constant; fill in event 1417 processing code 1418 1419 * ircd/engine_poll.c: include errno.h (oops); decrement error 1420 count after an hour using a timer; fill in event processing code 1421 1422 * ircd/engine_kqueue.c: include errno.h (oops); decrement error 1423 count after an hour using a timer; assert events filter is either 1424 EVFILT_READ or EVFILT_WRITE; fill in event processing code 1425 1426 * ircd/engine_devpoll.c: include errno.h (oops); decrement error 1427 count after an hour using a timer; fill in event processing code 1428 14292001-01-15 Kevin L. Mitchell <klmitch@mit.edu> 1430 1431 * ircd/client.c: fixed feattab; basically, when I changed features 1432 to use small integers specifying bit positions, instead of the 1433 bits themselves, I forgot to update feattab to not | these 1434 privileges together; also fixed a bug in the antiprivs masking 1435 loop in client_set_privs()--last index wouldn't get parsed 1436 14372001-01-11 Kevin L. Mitchell <klmitch@mit.edu> 1438 1439 * ircd/ircd_events.c: call event_generate() with new data 1440 argument; make it set that field in struct Event; make 1441 socket_add() return the value of the eng_add callback 1442 1443 * ircd/engine_select.c: make engine_add() return a 1444 successful/unsuccessful status; add bounds-checking outside of an 1445 assert; use accessor macros; use log_write(), not the deprecated 1446 ircd_log(); add an assert to engine_loop() to double-check for 1447 data structure corruption 1448 1449 * ircd/engine_poll.c: make engine_add() return a 1450 successful/unsuccessful status; add bounds-checking outside of an 1451 assert; use accessor macros; use log_write(), not the deprecated 1452 ircd_log(); add an assert to engine_loop() to double-check for 1453 data structure corruption 1454 1455 * ircd/engine_kqueue.c: implementation of an engine for kqueue() 1456 1457 * ircd/engine_devpoll.c: implementation of an engine for /dev/poll 1458 1459 * include/ircd_events.h: define some accessor macros; add ev_data 1460 to struct Event for certain important data--errno values, for 1461 instance; make EngineAdd callback tell us if it was successful or 1462 not; add extra argument to event_generate(); make socket_add() 1463 return the status from EngineAdd 1464 14652001-01-10 Kevin L. Mitchell <klmitch@mit.edu> 1466 1467 * ircd/ircd_events.c: pass initializer information about how many 1468 total _filedescriptors_ may be opened at once 1469 1470 * ircd/ircd.c: use exported "running" instead of unexported 1471 thisServer.running 1472 1473 * ircd/engine_select.c: implementation of an event engine based on 1474 select() 1475 1476 * ircd/engine_poll.c: implementation of an event engine based on 1477 poll() 1478 1479 * include/ircd_events.h: pass the engine initializer an integer 1480 specifing how many _filedescriptors_ may be opened at once 1481 1482 * include/ircd.h: running has to be exported for the engine_* 1483 event loops 1484 14852001-01-09 Kevin L. Mitchell <klmitch@mit.edu> 1486 1487 * ircd/ircd_events.c: include some needed headers; add some 1488 comments; make evEngines[] const; bundle sig_sock and sig_fd into 1489 a struct named sigInfo; rework struct evInfo to have a queue of 1490 _generators_, and only when threaded; added a gen_init() function 1491 to centralize generator initialization; fix various compile-time 1492 errors; rework event_add() for new queueing scheme and checked for 1493 compile-time errors; add casts where needed; spell evEngines[] 1494 correctly; make engine_name() return const char* 1495 1496 * include/ircd_events.h: type EventCallBack depends on struct 1497 Event, so pre-declare it; put _event_ queue into generators, and 1498 only when threaded; give engine data a union to store both ints 1499 and pointers; make engine name a const; fix gen_ref_dec() macro; 1500 make engine_name() return a const char* 1501 1502 * ircd/ircd_events.c: gen_dequeue() is now exported, so move it 1503 down with the non-static functions; modify event_execute() to use 1504 the new gen_ref_dec() to simplify code; make sure event_generate() 1505 does not generate new events for generators marked for destruction 1506 1507 * include/ircd_events.h: the engines, at least, may need to modify 1508 reference counts to keep generators from going away while 1509 something still points at them, so add reference counter 1510 manipulators and export gen_dequeue() for them 1511 1512 * ircd/ircd_events.c: set up the list of engines to try; set up 1513 the signal struct Socket; rename netInfo to evInfo; move static 1514 functions near the beginning of the file; do away with 1515 signal_signal() (since we no longer keep a signal count ourselves) 1516 and call event_generate() directly from signal_callback--also 1517 renamed some functions; allow signal_callback() to read up to 1518 SIGS_PER_SOCK at once from the signal pipe; add event_init() to 1519 initialize the entire event system; add event_loop() to call the 1520 engine's event loop; initialize new struct GenHeader member, 1521 gh_engdata; remove timer_next(); add socket_add() function to add 1522 a socket; add socket_del() to mark a socket for deletion; add 1523 socket_state() to transition a socket between states; add 1524 socket_events() to set what events we're interested in on the 1525 socket; add engine_name() to retrieve event engine's name 1526 1527 * include/ircd_events.h: add engine data field to struct 1528 GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a 1529 note about states vs s_events; remove signal count; fold union 1530 Generator back into struct Event; remove count members from struct 1531 Generators; redefine engine callbacks to not take a struct 1532 Engine*; add explanatory comments to callback definitions; add 1533 some engine callbacks to handle operations; remove struct Engine 1534 flag member--can detect single flag from eng_signal member; add 1535 event_init(), event_loop(), engine_name(), and the socket_*() 1536 functions; make timer_next() a macro to avoid a function call 1537 15382001-01-08 Kevin L. Mitchell <klmitch@mit.edu> 1539 1540 * include/ircd_events.h: rename to ircd_events.h, since it handles 1541 events, not just networking stuff; add signal support; more 1542 structural rearrangement 1543 1544 * ircd/ircd_events.c: rename to ircd_events.c, since it handles 1545 events, not just networking stuff; add signal support; more 1546 structural rearrangement 1547 15482001-01-07 Kevin L. Mitchell <klmitch@mit.edu> 1549 1550 * ircd/ircd_network.c: implement timer API; add reference counts 1551 appropriately 1552 1553 * include/ircd_network.h: firm up some pieces of the interface; 1554 split out members everything has into a separate structure; add 1555 reference counts; add timer API 1556 15572001-01-06 Kevin L. Mitchell <klmitch@mit.edu> 1558 1559 * ircd/ircd_network.c: static data and event manipulation 1560 functions for new event processing system 1561 1562 * include/ircd_network.h: data structures for new event processing 1563 system 1564 15652001-01-03 Kevin L. Mitchell <klmitch@mit.edu> 1566 1567 * ircd/whowas.c: Completely re-did the old allocation scheme by 1568 turning it into a linked list, permitting the 1569 NICKNAMEHISTORYLENGTH feature to be changed on the fly 1570 1571 * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH 1572 feature instead of old #define 1573 1574 * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an 1575 integer feature with a notify callback (whowas_realloc) 1576 1577 * ircd/client.c (client_set_privs): second memset was supposed to 1578 be over antiprivs, not privs; thanks, Chris Behrens 1579 <cbehrens@xo.com> for pointing that out... 1580 1581 * include/whowas.h: new elements for an extra linked list in 1582 struct Whowas; a notify function for feature value changes 1583 1584 * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH 1585 1586 * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature 1587 15882001-01-02 Kevin L. Mitchell <klmitch@mit.edu> 1589 1590 * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER 1591 compile-time option--now in features subsystem 1592 1593 * ircd/motd.c (motd_init): rework motd_init() to be called as the 1594 notify function for MPATH and RPATH features (should probably 1595 split it up a bit, though...) 1596 1597 * ircd/m_privs.c (mo_privs): if called with no parameters, return 1598 privs of the caller, rather than an error 1599 1600 * ircd/m_list.c: pull usage message into its own function; pull 1601 list parameter processing into its own function that does not 1602 modify the contents of the parameter; add list_set_default() to 1603 set the default list parameter (uses the notify hook); rework 1604 m_list() to make use of these functions; removed dead code 1605 1606 * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since 1607 we have no notify handler 1608 1609 * ircd/ircd_features.c: add notify callback for notification of 1610 value changes; give mark callback an int return value to indicate 1611 whether or not to call the notify callback; fix up feature macros 1612 for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite 1613 string handling in feature_set() to deal with def_str being a null 1614 pointer; wrote feature_init() to set up all defaults appropriately 1615 1616 * ircd/ircd.c (main): call feature_init() instead of 1617 feature_mark(), to avoid calling notify functions while setting up 1618 defaults 1619 1620 * ircd/client.c: updated to deal with new privileges structure 1621 1622 * ircd/class.c: updated so init_class() can be called should one 1623 of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or 1624 DEFAULTMAXSENDQLENGTH be changed 1625 1626 * include/ircd_log.h: log_feature_mark() updated to fit with new 1627 API changes 1628 1629 * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and 1630 feature_init() function (found necessary since adding the notify 1631 stuff and notifying motd.c during start-up...before we defined 1632 RPATH!) 1633 1634 * include/client.h: move privs around to enable addition of more 1635 bits if necessary; based on the FD_* macros 1636 1637 * include/channel.h: declare list_set_default (actually located in 1638 m_list.c *blanche*) 1639 1640 * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now 1641 AVBANLEN*MAXSILES) from features subsystem 1642 1643 * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to 1644 anything anymore 1645 1646 * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from 1647 the features subsystem 1648 1649 * ircd/s_auth.c (start_auth): NODNS migrated to the features 1650 subsystem 1651 1652 * ircd/random.c: created random_seed_set() function to set seed 1653 value, along with some stuff to make ircrandom() a little more 1654 random--state preserving, xor of time instead of direct usage, 1655 etc.; it's still a pseudo-random number generator, though, and 1656 hopefully I haven't broken the randomness 1657 1658 * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls 1659 1660 * ircd/m_join.c: use features interface to retrieve 1661 MAXCHANNELSPERUSER 1662 1663 * ircd/ircd_features.c: add NODISP flag for super-secret features; 1664 add a whole bunch of new features migrated over from make config 1665 1666 * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY, 1667 CONNECTTIMEOUT, and TIMESEC 1668 1669 * ircd/client.c (client_get_ping): use features interface to 1670 retrieve PINGFREQUENCY 1671 1672 * ircd/class.c: use features interface to retrieve PINGFREQUENCY, 1673 CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH 1674 1675 * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the 1676 features subsystem, we have to add something explicit 1677 1678 * ircd/channel.c: use features interface to retrieve 1679 KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER; 1680 note that MAXBANLENGTH is now calculated dynamically from MAXBANS 1681 and AVBANLEN 1682 1683 * ircd/Makefile.in: run make depend 1684 1685 * include/supported.h (FEATURESVALUES): update to reference 1686 feature settings 1687 1688 * include/random.h: add prototype for random_seed_set 1689 1690 * include/ircd_features.h: add several more features 1691 1692 * include/channel.h: move MAXBANS and MAXBANLENGTH into feature 1693 subsystem 1694 1695 * config/config-sh.in: feature-ized some more stuff 1696 1697 * include/motd.h: some new elements in motd.h for motd.c changes 1698 1699 * ircd/motd.c: motd_cache() now searches a list of already cached 1700 MOTD files; saves us from having duplicate caches in memory if 1701 there are two identical T-lines for two different sites... 1702 17032001-01-02 Perry Lorier <isomer@coders.net> 1704 * ircd/motd.c: don't core if the motd isn't found. Bug found by 1705 Amarande. 1706 17072001-01-02 Perry Lorier <isomer@coders.net> 1708 * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic. 1709 * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks 1710 to guppy for noticing, and hektik for providing the fix. 1711 * misc others: Minor cleanups, added more protocol_violations, ripped 1712 out more P09 stuffs, bit more protocol neg stuff. 1713 17142000-12-19 Kevin L. Mitchell <klmitch@mit.edu> 1715 1716 * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a 1717 space (*sigh* stupid clients...) 1718 1719 * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through 1720 ircd_features.[ch] 1721 1722 * ircd/s_err.c: get rid of GODMODE conditionals 1723 1724 * ircd/s_debug.c (debug_serveropts): switch to using appropriate 1725 calls into the features subsystem for various serveropts 1726 characters 1727 1728 * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional 1729 1730 * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem 1731 to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove 1732 NOFLOWCONTROL conditional 1733 1734 * ircd/s_auth.c: use features subsystem to determine value of 1735 KILL_IPMISMATCH 1736 1737 * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use 1738 features subsystem to determine the setting of IDLE_FROM_MSG 1739 1740 * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals 1741 1742 * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem; 1743 use features subsystem to get motd file names 1744 1745 * ircd/m_settime.c: get value of RELIABLE_CLOCK from features 1746 subsystem 1747 1748 * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does 1749 us no good; use features subsystem to figure out if we need to do 1750 HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use 1751 the Debug(()) macro instead; get value of RELIABLE_CLOCK from 1752 features subsystem 1753 1754 * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem 1755 1756 * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features 1757 subsystem 1758 1759 * ircd/m_connect.c: get SERVER_PORT from the features subsystem 1760 1761 * ircd/ircd_log.c (log_set_file): fix a bug that kept log files 1762 from getting marked if they were already set to something... 1763 1764 * ircd/ircd_features.c: add a flag to indicates read-only access; 1765 add several new features that used to be compile-time selected 1766 1767 * ircd/ircd.c: grab pidfile out of feature subsystem; don't check 1768 access to motd files (what the heck?); make sure to initialize the 1769 feature subsystem before trying to write the config file 1770 1771 * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings; 1772 use feature_bool() to figure out if we're using the FERGUSON 1773 flusher 1774 1775 * ircd/Makefile.in: MPATH and RPATH are now done differently, so 1776 remove the clause that creates empty files of that name; also ran 1777 make depend 1778 1779 * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately, 1780 there is no easy way to bounds-check it at present 1781 1782 * include/querycmds.h: make sure ircd_features.h is included; use 1783 feature_str(FEAT_DOMAINNAME) in calls to match() 1784 1785 * include/ircd_features.h: many new features that used to be 1786 compile-time selected 1787 1788 * config/config-sh.in: add * to DOMAINNAME; try also using first 1789 argument to search in /etc/resolv.conf; removed many compile-time 1790 options that now can be configured through the features system 1791 17922000-12-18 Kevin L. Mitchell <klmitch@mit.edu> 1793 1794 * doc/api/log.txt: how to use the logging API 1795 1796 * doc/api/features.txt: how to use the features API 1797 1798 * doc/api/api.txt: how to write API documentation 1799 1800 * include/ircd_features.h: rearranged a couple of features for 1801 neatness purposes 1802 1803 * ircd/ircd_features.c: cleaned up the macros some; rearranged 1804 some code to all go into the switch; rearranged a couple of 1805 features for neatness purposes 1806 18072000-12-16 Greg Sikorski <gte@atomicrevs.demon.co.uk> 1808 * ircd/os_bsd.c: Added os_set_tos for BSD users. 1809 18102000-12-16 Kevin L. Mitchell <klmitch@mit.edu> 1811 1812 * ircd/ircd_features.c: Isomer almost got it right; you need to 1813 use F_I(), since it's an integer value, not a boolean value. The 1814 asserts in feature_int would catch you out... Also made the F_* 1815 macros take flags 1816 1817 * ircd/s_err.c: define RPL_PRIVS reply 1818 1819 * ircd/parse.c: put new PRIVS command into command table 1820 1821 * ircd/m_privs.c (mo_privs): message handler to report operator 1822 privileges 1823 1824 * ircd/ircd_features.c: declare new features OPER_SET and 1825 LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and 1826 ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE 1827 1828 * ircd/client.c: simplify client_set_privs() with a table that 1829 defines what features to test for; add new client_report_privs() 1830 1831 * ircd/Makefile.in: compile new m_privs.c; run make depend 1832 1833 * include/numeric.h (RPL_PRIVS): new reply numeric for displaying 1834 an operator's privileges 1835 1836 * include/msg.h: define new command: PRIVS 1837 1838 * include/ircd_features.h: create new features OPER_SET and 1839 LOCOP_SET for controlling access to /set 1840 1841 * include/handlers.h (mo_privs): declare message handler for 1842 reporting oper privileges 1843 1844 * include/client.h (client_report_privs): declare function to 1845 report what privileges an oper has 1846 1847 * ircd/m_whois.c (do_whois): fix a bug that caused /whois to 1848 report that a user is an oper if the oper doing the /whois had 1849 PRIV_SEE_OPERS 1850 18512000-12-17 Isomer <Isomer@coders.net> 1852 * ircd/listener.c: added support for TOS twiddling as a 'feature'. 1853 18542000-12-17 Isomer <Isomer@coders.net> 1855 * ircd/os_linux.c: add TOS stuffs 1856 1857 * ircd/listener.c: add TOS stuffs 1858 18592000-12-16 Kevin L. Mitchell <klmitch@mit.edu> 1860 1861 * ircd/whocmds.c (do_who): use HasPriv to determine whether or not 1862 to indicate a user is an oper 1863 1864 * ircd/s_user.c: clear privileges setting when deopping; don't 1865 propagate +o unless user has PRIV_PROPAGATE privilege 1866 1867 * ircd/s_debug.c (debug_serveropts): created debug_serveropts() 1868 function and replaced how the server option string is generated 1869 1870 * ircd/parse.c: remove conditional on CONFIG_OPERCMDS 1871 1872 * ircd/m_whois.c (do_whois): use HasPriv to determine whether or 1873 not to indicate the user is an operator 1874 1875 * ircd/m_who.c: use HasPriv to determine whether or not a user 1876 should be displayed in the list of opers 1877 1878 * ircd/m_version.c: call debug_serveropts() to get server option 1879 string 1880 1881 * ircd/m_userip.c (userip_formatter): use HasPriv to determine 1882 whether or not to show oper status 1883 1884 * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine 1885 whether or not to show oper status 1886 1887 * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional 1888 checks with HasPriv check; remove dead code 1889 1890 * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional 1891 checks with HasPriv check 1892 1893 * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions; 1894 use feature_bool to check if disabled 1895 1896 * ircd/m_oper.c (m_oper): set oper priviliges 1897 1898 * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv 1899 check 1900 1901 * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we 1902 can kill 1903 1904 * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv 1905 check 1906 1907 * ircd/m_jupe.c (mo_jupe): rework permissions checking structure; 1908 use feature_bool to check if disabled 1909 1910 * ircd/m_join.c (m_join): remove BADCHAN conditional; replace 1911 #ifdef conditional with a HasPriv check 1912 1913 * ircd/m_gline.c (mo_gline): rework permissions checking 1914 structure; use feature_bool to check if any part is disabled 1915 1916 * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv 1917 check; remove dead code 1918 1919 * ircd/m_clearmode.c: use feature_bool() to detect if we're 1920 disabled; use HasPriv to figure out what we're permitted to do; 1921 only allow clearmode on moded channels 1922 1923 * ircd/ircd_features.c: define various features; use HasPriv to 1924 verify permissions to set/reset 1925 1926 * ircd/gline.c (gline_add): use HasPriv instead of #ifdef 1927 conditionals 1928 1929 * ircd/client.c (client_set_privs): function to set an oper's 1930 privileges 1931 1932 * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals 1933 1934 * include/whocmds.h: deconditionalize several macros and 1935 substitute appropriate calls to HasPriv() 1936 1937 * include/s_debug.h: get rid of global serveropts[]; define new 1938 function debug_serveropts() to build that string on the fly 1939 1940 * include/ircd_features.h: define some features 1941 1942 * include/client.h: add privs member to struct Connection; define 1943 various priviledges 1944 1945 * include/channel.h: no longer using IsOperOnLocalChannel; remove 1946 conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES 1947 1948 * doc/Configure.help: remove help information for deprecated 1949 options 1950 1951 * config/config-sh.in: remove certain deprecated options having to 1952 do with what opers can and cannot do--first stage in moving 1953 compile-time constants into the .conf 1954 19552000-12-16 Isomer <Isomer@coders.net> 1956 * ircd/parse.c: detect if the prefix is missing and try and recover 1957 instead of coring. 1958 19592000-12-15 Kevin L. Mitchell <klmitch@mit.edu> 1960 1961 * ircd/ircd_log.c: found and fixed some bugs in the debug logging 1962 code that would sometimes result in the log file not being 1963 reopened--which meant that a user could connect and get the 1964 logging output--oops 1965 1966 * ircd/Makefile.in: run make depend... 1967 1968 * ircd/s_stats.c: get rid of report_feature_list() 1969 1970 * ircd/s_err.c: add the 'bad value' error message, shift error 1971 messages over somewhat 1972 1973 * ircd/s_debug.c (debug_init): call log_debug_init with the 1974 use_tty flag 1975 1976 * ircd/s_conf.c (read_configuration_file): unmark features before 1977 reading the config file, then reset unmarked features after 1978 reading the config file 1979 1980 * ircd/m_stats.c: use feature_report() instead of 1981 report_feature_list() 1982 1983 * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add 1984 special 'mark' flags and use them; add the stuff needed by the 1985 features API 1986 1987 * ircd/ircd_features.c: rework the features API and add gobs of 1988 comments to try to explain what some of these complex functions 1989 are actually doing 1990 1991 * include/s_stats.h: get rid of report_feature_list(); use 1992 feature_report() instead 1993 1994 * include/numeric.h: added a new error message and shifted old 1995 values over some--this is, after all, an alpha 1996 1997 * include/ircd_log.h: log_debug_init now takes an integer to tell 1998 it if it should be using the tty; added a couple of functions 1999 required by the features API 2000 2001 * include/ircd_features.h: add an enum and some more functions to 2002 flesh out the feature API--it should now be possible to put all 2003 those compile-time constants in the config file! 2004 2005 * ircd/send.c: got the direction of the assert incorrect... 2006 2007 * ircd/send.c: implement the efficiency of flush_connections by 2008 creating a linked list of struct Connection's with queued data; 2009 also get rid of flush_sendq_except and make sure to yank 2010 connections out of the list when their sendQs become empty (notice 2011 the assertion in flush_connections!) 2012 2013 * ircd/s_bsd.c (close_connection): must yank the Connection out of 2014 the sendq list 2015 2016 * ircd/list.c (dealloc_connection): must yank the Connection out 2017 of the sendq list 2018 2019 * ircd/dbuf.c (dbuf_put): call flush_connections instead of the 2020 deprecated flush_sendq_except 2021 2022 * ircd/client.c: define a couple new helper functions for sendq 2023 threading--this will make the flush_connections function in send.c 2024 considerably more efficient by creating a linked list of 2025 Connections that have queued data to send 2026 2027 * include/send.h: remove flush_sendq_except, as it's not used 2028 anymore 2029 2030 * include/client.h: declare a couple new helper functions for the 2031 sendq threading system 2032 20332000-12-14 Kevin L. Mitchell <klmitch@mit.edu> 2034 2035 * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON 2036 parse all arguments 2037 2038 * ircd/s_debug.c (count_memory): modify to report for clients and 2039 connections, not local clients and remote clients 2040 2041 * ircd/list.c: fiddle with the client-fiddling functions to take 2042 into account the divorce of struct Connection from struct Client 2043 2044 * ircd/ircd.c: define a struct Connection for me, initialize it, 2045 and link it into the right place (ewww, globals!) 2046 2047 * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split 2048 struct Client into struct Client and struct Connection; redefine 2049 local-portion accessor macros to go through struct Client to the 2050 struct Connection; define struct Connection accessor macros 2051 20522000-12-13 Kevin L. Mitchell <klmitch@mit.edu> 2053 2054 * ircd/whowas.c: missed a couple of accesses to a struct Client 2055 2056 * ircd/uping.c: missed a couple of accesses to a struct Client 2057 2058 * ircd/send.c: missed a couple of accesses to a struct Client 2059 2060 * ircd/s_user.c: missed a couple of accesses to a struct Client 2061 2062 * ircd/s_misc.c: missed a couple of accesses to a struct Client 2063 2064 * ircd/s_conf.c: missed a couple of accesses to a struct Client 2065 2066 * ircd/s_bsd.c: missed a couple of accesses to a struct Client 2067 2068 * ircd/s_auth.c: missed a couple of accesses to a struct Client 2069 2070 * ircd/res.c: missed a couple of accesses to a struct Client 2071 2072 * ircd/parse.c: missed a couple of accesses to a struct Client 2073 2074 * ircd/m_whois.c: use new accessor macros for struct Client 2075 2076 * ircd/m_who.c: use new accessor macros for struct Client 2077 2078 * ircd/m_wallchops.c: use new accessor macros for struct Client 2079 2080 * ircd/m_version.c: use new accessor macros for struct Client 2081 2082 * ircd/m_userip.c: use new accessor macros for struct Client 2083 2084 * ircd/m_userhost.c: use new accessor macros for struct Client 2085 2086 * ircd/m_user.c: use new accessor macros for struct Client 2087 2088 * ircd/m_uping.c: use new accessor macros for struct Client 2089 2090 * ircd/m_trace.c: use new accessor macros for struct Client 2091 2092 * ircd/m_topic.c: use new accessor macros for struct Client 2093 2094 * ircd/m_time.c: use new accessor macros for struct Client 2095 2096 * ircd/m_stats.c: use new accessor macros for struct Client 2097 2098 * ircd/m_squit.c: use new accessor macros for struct Client 2099 2100 * ircd/m_silence.c: use new accessor macros for struct Client 2101 2102 * ircd/m_server.c: use new accessor macros for struct Client; 2103 remove dead code 2104 2105 * ircd/m_rpong.c: use new accessor macros for struct Client 2106 2107 * ircd/m_rping.c: use new accessor macros for struct Client 2108 2109 * ircd/m_quit.c: use new accessor macros for struct Client 2110 2111 * ircd/m_privmsg.c: use new accessor macros for struct Client 2112 2113 * ircd/m_pong.c: use new accessor macros for struct Client; remove 2114 dead code 2115 2116 * ircd/m_ping.c: use new accessor macros for struct Client 2117 2118 * ircd/m_pass.c: use new accessor macros for struct Client 2119 2120 * ircd/m_part.c: use new accessor macros for struct Client 2121 2122 * ircd/m_oper.c: use new accessor macros for struct Client 2123 2124 * ircd/m_notice.c: use new accessor macros for struct Client 2125 2126 * ircd/m_nick.c: use new accessor macros for struct Client 2127 2128 * ircd/m_names.c: use new accessor macros for struct Client 2129 2130 * ircd/m_mode.c: use new accessor macros for struct Client 2131 2132 * ircd/m_map.c: use new accessor macros for struct Client 2133 2134 * ircd/m_list.c: use new accessor macros for struct Client 2135 2136 * ircd/m_links.c: use new accessor macros for struct Client; 2137 remove some dead code 2138 2139 * ircd/m_kill.c: use new accessor macros for struct Client; remove 2140 some dead code 2141 2142 * ircd/m_kick.c: use new accessor macros for struct Client 2143 2144 * ircd/m_join.c: use new accessor macros for struct Client; remove 2145 some dead code 2146 2147 * ircd/m_ison.c: use new accessor macros for struct Client 2148 2149 * ircd/m_invite.c: use new accessor macros for struct Client 2150 2151 * ircd/m_info.c: use new accessor macros for struct Client 2152 2153 * ircd/m_gline.c: use new accessor macros for struct Client 2154 2155 * ircd/m_error.c: use new accessor macros for struct Client 2156 2157 * ircd/m_create.c: use new accessor macros for struct Client 2158 2159 * ircd/m_connect.c: use new accessor macros for struct Client; 2160 removed some dead code 2161 2162 * ircd/m_burst.c: use new accessor macros for struct Client 2163 2164 * ircd/m_away.c: use new accessor macros for struct Client 2165 2166 * ircd/m_admin.c: use new accessor macros for struct Client 2167 2168 * ircd/hash.c: missed a couple of accesses to a struct Client 2169 2170 * ircd/gline.c: missed a couple of accesses to a struct Client 2171 2172 * ircd/crule.c: missed a couple of accesses to a struct Client 2173 2174 * ircd/class.c: missed an access to a struct Client 2175 2176 * ircd/channel.c: missed a couple of accesses to a struct Client 2177 2178 * ircd/IPcheck.c: missed an access to a struct Client 2179 2180 * include/querycmds.h: fix a couple of stats macros to use 2181 structure accessor macros 2182 2183 * include/client.h: change structure member names to highlight any 2184 places in the code I've missed 2185 21862000-12-12 Kevin L. Mitchell <klmitch@mit.edu> 2187 2188 * ircd/whowas.c: use new struct Client accessor macros 2189 2190 * ircd/whocmds.c: use new struct Client accessor macros 2191 2192 * ircd/send.c: use new struct Client accessor macros 2193 2194 * ircd/s_user.c: use new struct Client accessor macros; removed 2195 some dead code 2196 2197 * ircd/s_serv.c: use new struct Client accessor macros; removed 2198 some dead code 2199 2200 * ircd/s_numeric.c: use new struct Client accessor macros 2201 2202 * ircd/s_misc.c: use new struct Client accessor macros 2203 2204 * ircd/s_debug.c: use new struct Client accessor macros 2205 2206 * ircd/s_conf.c: use new struct Client accessor macros 2207 2208 * ircd/s_bsd.c: use new struct Client accessor macros 2209 2210 * ircd/s_auth.c: use new struct Client accessor macros 2211 2212 * ircd/parse.c: use new struct Client accessor macros 2213 2214 * ircd/packet.c: use new struct Client accessor macros 2215 2216 * ircd/numnicks.c: use new struct Client accessor macros 2217 2218 * ircd/motd.c: use new struct Client accessor macros 2219 2220 * ircd/listener.c: use new struct Client accessor macros 2221 2222 * ircd/list.c: use new struct Client accessor macros 2223 2224 * ircd/jupe.c: use new struct Client accessor macros 2225 2226 * ircd/ircd_snprintf.c: use new struct Client accessor macros 2227 2228 * ircd/ircd_reply.c: use new struct Client accessor macros 2229 2230 * ircd/ircd_relay.c: use new struct Client accessor macros 2231 2232 * ircd/ircd.c: use new struct Client accessor macros 2233 2234 * ircd/gline.c: catch some instances of me.<stuff> I missed 2235 previously 2236 2237 * ircd/client.c: use cli_ instead of con_ 2238 2239 * ircd/class.c: use cli_ instead of con_ 2240 2241 * ircd/channel.c: use cli_ instead of con_ 2242 2243 * ircd/IPcheck.c: use cli_ instead of con_; catch some instances 2244 of me.<stuff> I missed previously 2245 2246 * include/client.h: use cli_ instead of con_...seemed like a good 2247 idea at the time *shrug* 2248 22492000-12-11 Kevin L. Mitchell <klmitch@mit.edu> 2250 2251 * ircd/hash.c: use struct Client accessor macros 2252 2253 * ircd/gline.c: use struct Client accessor macros 2254 2255 * ircd/crule.c: use struct Client accessor macros 2256 2257 * ircd/client.c: use struct Client accessor macros; remove some 2258 dead code 2259 2260 * ircd/class.c: use struct Client accessor macros 2261 2262 * ircd/channel.c: use struct Client accessor macros; remove some 2263 dead code 2264 2265 * ircd/IPcheck.c: use struct Client accessor macros 2266 2267 * include/numnicks.h: use struct Client accessor macros 2268 2269 * include/client.h: first step to divorcing struct Client and 2270 struct Connection--define accessor macros and use them 2271 2272 * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the 2273 uplink would remove them. This is because the removal protocol 2274 message wasn't being sent to the uplinks. This is fixed by fixing 2275 propagate_gline() to send the proper number of arguments depending 2276 on whether or not we're adding or deleting the Uworld gline, and 2277 by having gline_deactivate() make sure to turn off the active bit 2278 and call propagate_gline() if it's a Uworld gline 2279 22802000-12-10 Kevin L. Mitchell <klmitch@mit.edu> 2281 2282 * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case 2283 2284 * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined 2285 anywhere intelligent... 2286 22872000-12-09 Kevin L. Mitchell <klmitch@mit.edu> 2288 2289 * ircd/send.c (send_queued): call deliver_it with appropriate 2290 arguments 2291 2292 * ircd/s_serv.c: reorder a couple of headers--cosmetic 2293 2294 * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct 2295 MsgQ 2296 2297 * ircd/os_solaris.c (os_sendv_nonb): function for calling writev 2298 with appropriate iovec 2299 2300 * ircd/os_linux.c (os_sendv_nonb): function for calling writev 2301 with appropriate iovec 2302 2303 * ircd/os_generic.c (os_sendv_nonb): function for calling writev 2304 with appropriate iovec 2305 2306 * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with 2307 appropriate iovec 2308 2309 * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up 2310 exactly how much we're trying to write out to the fd 2311 2312 * include/s_bsd.h: make deliver_it take a struct MsgQ 2313 2314 * include/msgq.h: add a len_p argument to msgq_mapiov to help 2315 detect short writes that indicate possible socket blocking 2316 2317 * include/ircd_osdep.h: declare os_sendv_nonb() 2318 2319 * ircd/channel.c (modebuf_mode): don't add empty modes... 2320 23212000-12-08 Kevin L. Mitchell <klmitch@mit.edu> 2322 2323 * include/send.h: add prio argument to send_buffer to select 2324 between normal and priority queues 2325 2326 * ircd/s_user.c (send_user_info): add prio argument to send_buffer 2327 call 2328 2329 * ircd/m_ison.c (m_ison): add prio argument to send_buffer call 2330 2331 * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer 2332 call 2333 2334 * ircd/channel.c (send_channel_modes): add prio argument to 2335 send_buffer call 2336 2337 * ircd/send.c (send_buffer): add a prio argument to select the 2338 priority queue; update send.c functions to use it 2339 2340 * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and 2341 msgq_add; add a prio argument to msgq_add to select the priority 2342 queue 2343 2344 * include/msgq.h: remove msgq_prio; add a prio argument to 2345 msgq_add 2346 2347 * ircd/send.c: remove sendbuf; remove GODMODE code; switch to 2348 using msgq functions instead of dbuf functions; remove old, dead 2349 sendto_* functions; redo send_buffer to take a struct MsgBuf; 2350 rework sendcmdto_* functions to make use of the new struct MsgBuf 2351 2352 * ircd/s_user.c: remove hunt_server; restructure send_user_info to 2353 make appropriate use of struct MsgBuf 2354 2355 * ircd/s_debug.c (count_memory): count memory used by the MsgQ 2356 system and report it 2357 2358 * ircd/s_conf.c (read_configuration_file): use 2359 sendto_opmask_butone instead of the now dead sendto_op_mask 2360 2361 * ircd/s_bsd.c: switch to using appropriate MsgQLength and other 2362 calls on sendQ 2363 2364 * ircd/parse.c (parse_server): get rid of a piece of GODMODE code 2365 2366 * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in 2367 msgq_clean 2368 2369 * ircd/m_version.c: fix spelling in comments marking dead code 2370 2371 * ircd/m_userip.c (userip_formatter): restructure to make use of 2372 struct MsgBuf 2373 2374 * ircd/m_userhost.c (userhost_formatter): restructure to make use 2375 of struct MsgBuf 2376 2377 * ircd/m_stats.c: use MsgQLength on a sendQ 2378 2379 * ircd/m_settime.c: use MsgQLength instead of DBufLength on a 2380 sendQ; mark a piece of dead code 2381 2382 * ircd/m_names.c: use send_reply instead of sendto_one 2383 2384 * ircd/m_mode.c: use new mode; remove old dead code 2385 2386 * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf 2387 2388 * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old 2389 dead code 2390 2391 * ircd/listener.c (accept_connection): use sendto_opmask_butone 2392 instead of sendto_op_mask 2393 2394 * ircd/list.c (free_client): use MsgQClear to clear sendQ 2395 2396 * ircd/ircd_reply.c: remove send_error_to_client; restructure 2397 send_reply to make use of struct MsgBuf 2398 2399 * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except, 2400 since its no longer used (at least currently) 2401 2402 * ircd/channel.c: restructure send_channel_modes to make use of 2403 struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode, 2404 and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE 2405 2406 * ircd/Makefile.in: add msgq.c to list of sources; run make depend 2407 2408 * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one 2409 2410 * include/send.h: send_buffer now takes a struct MsgBuf * instead 2411 of a char *; flush_sendq_except now takes no arguments, as sendq 2412 flushing currently only happens in dbuf.h and sendQ is a struct 2413 MsgQ; remove prototypes for a lot of old sendto_* functions that 2414 aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is 2415 no longer needed, and the latter is identical to BUFSIZE in 2416 ircd_defs.h 2417 2418 * include/s_user.h: make InfoFormatter take a struct MsgBuf* 2419 instead of a char *; also make it return void, instead of char * 2420 2421 * include/msgq.h: add msgq_append and msgq_bufleft functions 2422 2423 * include/client.h: use a struct MsgQ instead of a struct DBuf for 2424 sendq 2425 2426 * doc/Configure.help: Remove help for compile-time options that 2427 have gone away 2428 2429 * config/config-sh.in: remove CONFIG_NEWMODE 2430 2431 * ircd/m_server.c (mr_server): don't send server IPs in any server 2432 notices 2433 2434 * ircd/msgq.c (msgq_vmake): add \r\n to messages 2435 24362000-12-07 Kevin L. Mitchell <klmitch@mit.edu> 2437 2438 * include/msgq.h: declare the MsgQ API 2439 2440 * ircd/msgq.c: implementation of new MsgQ system 2441 24422000-12-06 Kevin L. Mitchell <klmitch@mit.edu> 2443 2444 * ircd/ircd_features.c: #include was supposed to be for 2445 ircd_features.h, not features.h--missed when I had to do a 2446 rename because of namespace collision 2447 24482000-12-05 Greg Sikorski <gte@atomicrevs.demon.co.uk> 2449 * ircd/m_topic.c: Added missing braces that caused all remote 2450 topics to be ignored. 2451 24522000-12-04 Kevin L. Mitchell <klmitch@mit.edu> 2453 2454 * ircd/m_create.c: I'm tired of the exit_client warning :) 2455 (ms_create): discovered that exit_client() was being called with 2456 too few arguments 2457 2458 * ircd/s_misc.c (exit_client): remove all dependance on 2459 FNAME_USERLOG, since that's now gone; log only to LS_USER 2460 2461 * ircd/s_debug.c: USE_SYSLOG no longer means anything 2462 2463 * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already 2464 log to LS_OPER 2465 2466 * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL 2467 2468 * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG 2469 2470 * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve 2471 the same purpose as LS_USER and LS_OPER 2472 2473 * config/config-sh.in: remove no longer relevant log config 2474 variables 2475 2476 * ircd/uping.c (uping_init): use log_write instead of ircd_log 2477 2478 * ircd/s_misc.c (exit_client): use log_write instead of ircd_log 2479 2480 * ircd/s_conf.c: use log_write instead of ircd_log 2481 2482 * ircd/s_bsd.c (report_error): use log_write instead of ircd_log 2483 2484 * ircd/s_auth.c (timeout_auth_queries): use log_write instead of 2485 ircd_log 2486 2487 * ircd/res.c (send_res_msg): use log_write instead of ircd_log 2488 2489 * ircd/m_who.c: use log_write instead of write_log; no longer 2490 conditionalize on WPATH; mark dead ircd_log calls 2491 2492 * ircd/m_uping.c: mark dead ircd_log call 2493 2494 * ircd/m_server.c (mr_server): use log_write instead of ircd_log 2495 2496 * ircd/m_restart.c: use log_write instead of ircd_log; mark dead 2497 ircd_log calls 2498 2499 * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log 2500 2501 * ircd/m_oper.c: use log_write instead of ircd_log; no longer 2502 conditionalize on FNAME_OPERLOG; mark dead ircd_log calls 2503 2504 * ircd/m_kill.c: mark dead ircd_log calls 2505 2506 * ircd/m_connect.c: use log_write instead of ircd_log; mark dead 2507 ircd_log 2508 2509 * ircd/m_clearmode.c: use log_write instead of write_log; no 2510 longer conditionalize on OPATH 2511 2512 * ircd/jupe.c: use log_write instead of write_log; no longer 2513 conditionalize on JPATH 2514 2515 * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat 2516 function; fix a couple of bugs 2517 2518 * ircd/ircd_alloc.c: fixed a comment 2519 2520 * ircd/ircd.c: use log_write instead of ircd_log; fold server 2521 notice generation in a couple of cases 2522 2523 * ircd/gline.c: use log_write instead of write_log; no longer 2524 conditionalize on GPATH 2525 2526 * ircd/channel.c (modebuf_flush_int): use log_write instead of 2527 write_log; no longer conditionalize on OPATH 2528 2529 * ircd/Makefile.in: run make depend, since dependencies have 2530 changed 2531 2532 * doc/example.conf: add system USER to documentation 2533 2534 * include/ircd_log.h: add system USER; remove old ircd_log() 2535 declarations 2536 25372000-12-04 Isomer <isomer@coders.net> 2538 * ircd/m_names.c: Add NAMES_EON to do_names to say add a 2539 'end_of_names' reply when done. 2540 * ircd/m_join.c: use NAMES_EON as mentioned above 2541 25422000-12-01 net <simms@LUCIDA.QC.CA> 2543 2544 * ircd/motd.c: add a freelist for struct Motds 2545 25462000-11-30 Kevin L. Mitchell <klmitch@mit.edu> 2547 2548 * ircd/s_stats.c (report_feature_list): report features--only 2549 local opers can see logging configuration, since it doesn't really 2550 mean anything to users 2551 2552 * ircd/s_err.c: add reply messages for new feature subsystem 2553 2554 * ircd/s_conf.c: add F lines to .conf 2555 2556 * ircd/parse.c: add the message descriptions for /set, /reset, and 2557 /get 2558 2559 * ircd/m_stats.c: add /stats f 2560 2561 * ircd/m_set.c (mo_set): implement /set 2562 2563 * ircd/m_reset.c (mo_reset): implement /reset 2564 2565 * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l 2566 reopens log files (for log file rotation) 2567 2568 * ircd/m_get.c (mo_get): implement /get 2569 2570 * ircd/ircd_log.c: use int instead of void return value; add 2571 log_report_features() and log_canon(); fix a function that 2572 disappears if DEBUGMODE not #define'd 2573 2574 * ircd/ircd_features.c: functions to manipulate feature settings 2575 either from the config file or with the new /set, /reset, and /get 2576 commands 2577 2578 * ircd/Makefile.in: add new .c files, run make depend 2579 2580 * include/s_stats.h: declare report_feature_list() (/stats f 2581 handler) 2582 2583 * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE, 2584 ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE 2585 reply numerics 2586 2587 * include/msg.h: add defines for SET, RESET, and GET 2588 2589 * include/ircd_log.h: add a function to canonicalize subsystem 2590 names; change some void return values to int 2591 2592 * include/ircd_features.h: new features subsystem handles all the 2593 manipulation of special features, like log files 2594 2595 * include/handlers.h: declare new mo_{s,res,g}et message handlers 2596 for fiddling with features run-time 2597 2598 * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default; 2599 seemed like a good idea at the time... 2600 2601 * doc/example.conf: document new F lines 2602 26032000-11-29 Kevin L. Mitchell <klmitch@mit.edu> 2604 2605 * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of 2606 new logging functions, which have special support for the debug 2607 log; added loop detection to vdebug(), so that I can 2608 sendto_opmask_butone() from log_vwrite() without incurring another 2609 call to vdebug() 2610 2611 * ircd/s_conf.c (rehash): call log_reopen() from rehash routine; 2612 this allows log file rotations 2613 2614 * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill() 2615 2616 * ircd/ircd_log.c: much more work fleshing out the interface; 2617 removed old interface; included backwards-compat ircd_log() 2618 function that logs to subsystem LS_OLDLOG 2619 2620 * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen() 2621 functions 2622 2623 * include/ircd_log.h: include stdarg.h for va_list; move ordering 2624 warning to top of file; fill out LogSys enum; declare new 2625 log_debug_init(), log_vwrite(), log_write_kill(), and 2626 log_[sg]et_*() functions; add flags argument to log_write(); 2627 defined flags to inhibit various logging actions 2628 2629 * include/client.h: added support for new SNO_DEBUG, enabled only 2630 if DEBUGMODE is defined 2631 26322000-11-28 Kevin L. Mitchell <klmitch@mit.edu> 2633 2634 * ircd/ircd_log.c: make sure the various LOG_* constants are 2635 defined (probably not needed, since #include <syslog.h> isn't 2636 conditional); various static data needed for the new logging 2637 functions; definitions of new logging functions 2638 2639 * include/ircd_log.h: new LogSys enum, declarations for part of 2640 new logging API 2641 2642 * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally, 2643 which was of course stupid; switched to using switch/case in 2644 initialization in motd_create(); zero the MotdList.other pointer 2645 from motd_clear() 2646 2647 * ircd/ircd.c (main): motd_init() has to come before init_conf(), 2648 or we overwrite init_conf()'s hard work with respect to T-lines 2649 26502000-11-27 Kevin L. Mitchell <klmitch@mit.edu> 2651 2652 * ircd/s_stats.c: comment out report_motd_list and include a 2653 reference to motd_report() 2654 2655 * ircd/s_conf.c: rip out the old MOTD manipulation functions; call 2656 motd_add() from the conf parser; call motd_clear() from the rehash 2657 routine; remove the no longer needed memory clearing and reloading 2658 stuff from the rehash service routine 2659 2660 * ircd/motd.c: loads new API, including static internal functions 2661 to do allocation/deallocation, etc. 2662 2663 * ircd/m_stats.c: use new motd_report() instead of 2664 report_motd_list() 2665 2666 * ircd/m_motd.c: use new syntax for motd_send() 2667 2668 * ircd/ircd.c: use new motd_init() function 2669 2670 * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in 2671 Makefile.(in); also ran make depend 2672 2673 * include/motd.h: don't need config.h, but now do need time.h; 2674 define new structures and constants; redefine old API and define 2675 new functions 2676 26772000-11-22 Kevin L. Mitchell <klmitch@mit.edu> 2678 2679 * ircd/s_user.c (register_user): use motd_signon() instead of 2680 calling m_motd; much cleaner this way 2681 2682 * ircd/motd.c: write the new motd_* stuff to make MOTD handling 2683 less of a crock 2684 2685 * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_* 2686 functions 2687 2688 * include/motd.h: define new MOTD API stuff 2689 26902000-11-20 Kevin L. Mitchell <klmitch@mit.edu> 2691 2692 * ircd/ircd_reply.c (protocol_violation): rewrite 2693 protocol_violation so it'll actually work 2694 2695 oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get 2696 the client's real name in there. 2697 2698 * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr) 2699 resulted in core dumps if NODEFAULTMOTD is defined, because m_motd 2700 gets called from register_user with a NULL sptr. This is probably 2701 a design problem, but this bandaid will do for now... 2702 27032000-11-19 Isomer <isomer@coders.net> 2704 * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us 2705 to problems in the server<->server protocol. 2706 2707 * ircd/m_connect.c: allow remote connects with a port of '0' 2708 meaning to use the port in the config file. 2709 2710 * ircd/m_create.c: Enable hacking protection, lets see how far we 2711 get. 2712 2713 * ircd/m_error.c: The RFC says never accept ERROR from unreg'd 2714 clients, so we don't any more. 2715 2716 * ircd/m_kill.c: The kill path is now made up of numnicks of servers, 2717 and the user@host is displayed of the victim. 2718 2719 * ircd/m_map.c: reloaded 'dump_map'. 2720 2721 * ircd/m_trace.c: allow per class T: 2722 2723 * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net. 2724 27252000-11-17 Isomer <isomer@coders.net> 2726 2727 * ircd/m_topic.c: Fixed bug where we'd only send to clients topics 2728 that were the *same* instead of different. Oh the embarrasment! 2729 2730 * ircd/IPcheck.c: Merged net's fix. 2731 27322000-11-02 Kevin L. Mitchell <klmitch@mit.edu> 2733 2734 * ircd/m_whois.c: remove compiler warning by adding a newline to 2735 end of file 2736 2737 * ircd/m_names.c: moved the flags up to s_user.h 2738 2739 * ircd/m_join.c: call do_names instead of m_names; restructure 2740 ms_join to never transmute a JOIN into a CREATE, but use the TS in 2741 the JOIN (if present) to timestamp the channel 2742 2743 * ircd/channel.c: send JOINs individually, instead of grouping 2744 them, so that we can send the channel's creation time 2745 2746 * include/s_user.h: declare do_names() 2747 27482000-10-30 Isomer <isomer@coders.net> 2749 * ircd/m_oper.c: Fixed warning 2750 27512000-10-30 Isomer <isomer@coders.net> 2752 * ircd/m_oper.c: Fixed over agressive cut and no paste 2753 27542000-10-30 Isomer <isomer@coders.net> 2755 2756 * ircd/m_topic.c: Restructured, fixed bug where topics on local 2757 channels are propergated (I forget who pointed this out to me, but 2758 thanks anyway). Also to save bandwidth don't send the topic to 2759 users if the topic is already the same on the server (but still 2760 propergate to other servers). X/W's "autotopic" feature must 2761 chew a lot of bandwidth, hopefully this will help reduce this. 2762 2763 * doc/rfc1459.rfc: Updated documentation on /topic. 2764 2765 * ircd/listener.c: snotice warnings about failed accept()'s 2766 potentially warning admins that they're running out of fd's. 2767 2768 * ircd/stats.c, ircd/class.c: Removed /stats v, added number of 2769 people in a class in /stats y 2770 2771 * ircd/m_create.c: Checks for timewarp hacking and squit's 2772 evil servers. (currently disabled) 2773 2774 27752000-10-30 net <simms@lucida.qc.ca> 2776 2777 * ircd/gline.c: Fixed various bugs Isomer left behind. 2778 27792000-10-26 Kevin L. Mitchell <klmitch@mit.edu> 2780 2781 * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed 2782 channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME 2783 27842000-10-24 Kevin L. Mitchell <klmitch@mit.edu> 2785 2786 * ircd/channel.c: ok, now last mode rules; mode +ps will always 2787 result in +s (and won't send a mode if the channel is already +s); 2788 mode +sp will always result in +p; -n+n on a +n channel results in 2789 no mode change; -n+n on a -n channel results in a +n mode change; 2790 etc. 2791 27922000-10-23 Kevin L. Mitchell <klmitch@mit.edu> 2793 2794 * ircd/channel.c: add "add" and "del" elements to ParseState to 2795 avoid not-too-pretty -p+s when +s is sufficient; fix a bug in 2796 mode_parse_limit that caused it to clear all channel modes 2797 prematurely; restructure mode_parse_mode to avoid calling 2798 modebuf_mode too early (ties in with first mentioned change); 2799 better logic for +p/+s mutual exclusivity; initialize "add" and 2800 "del" elements in mode_parse; send simple modes down to 2801 modebuf_mode after the loop in mode_parse 2802 28032000-09-28 Greg Sikorski <gte@atomicrevs.demon.co.uk> 2804 * ircd/m_names.c: Fixed a non-lethal logic error that 2805 triggers an assert() in find_member_link while debugging. 2806 (Spotted by Maniac-). 28072000-09-19 Thomas Helvey <helveytw@home.com> 2808 * ircd/s_conf.c: move K:lines to their own list and data 2809 structures, add supporting code. 2810 * ircd/m_stats.c: cleanup stats processing a bit move 2811 kline listing code to a new function, haven't figured 2812 out where it goes yet tho' 2813 * ircd/s_stats.c: added K:line bulk lister 2814 * include/s_conf.h: added new DenyConf struct 2815 * *[ch]: fixeup code that depended on changes 2816 28172000-09-17 Thomas Helvey <helveytw@home.com> 2818 * ircd/class.c: encapsulate class list 2819 * include/class.h: clean up classes 2820 * * fixup code that depended on changes 2821 28222000-09-17 Thomas Helvey <helveytw@home.com> 2823 * ircd/s_conf.c: add me to local conf 2824 * include/s_conf.h: move CONF_ME macro to chkconf.c 2825 * ircd/s_bsd.c: cleanup initialization, allow virtual host 2826 to be changed by rehash 2827 28282000-09-17 Thomas Helvey <helveytw@home.com> 2829 * include/class.h: add missing prototype 2830 * ircd/class.c: make argument to get_conf_class const 2831 28322000-09-17 Thomas Helvey <helveytw@home.com> 2833 * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup 2834 merge conflicts. 2835 * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup 2836 merge conflicts 2837 28382000-09-16 Thomas Helvey <helveytw@home.com> 2839 * ircd/s_conf.c: add code for server struct 2840 * ircd/client.c: copy of class.c sort of, new file for client 2841 specific operations, will move things here as appropriate, 2842 currently only one function is exported from here. 2843 * ircd/*.c: general logic cleanups, convert negatives to 2844 positives in places. 2845 28462000-09-16 Thomas Helvey <helveytw@home.com> 2847 * ircd/s_conf.c: add code for new crule data structs, strip quotes 2848 * ircd/crule.c: clean up scary casting a bit, type safety stuff 2849 * include/s_conf.h: add CRuleConf struct and support, remove 2850 unused constants 2851 * include/crule.h: type safety cleanups 2852 * ircd/*.c: fixup code that depended on stuff I changed 2853 28542000-09-15 Thomas Helvey <helveytw@home.com> 2855 * ircd/s_conf.c: start adding code for new conf data structs, changed 2856 listeners, admin line, motd lines, class lines. Move validate_hostent 2857 to resolver. General mayhem. 2858 * include/s_conf.h: new data structs and accessors 2859 * ircd/res.c: move validate_hostent here, rewrite, use regular 2860 expression for validation. 2861 * doc/example.conf: update docs for port 2862 28632000-09-14 Thomas Helvey <helveytw@home.com> 2864 * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break 2865 up conf_init into managable chunks. 2866 * ircd/listener.c (set_listener_mask): fix logic bug core dump. 2867 * include/s_conf.h: add new data struct for local info (unwinding the mess). 2868 28692000-09-13 Thomas Helvey <helveytw@home.com> 2870 * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS 2871 local clients. 2872 * ircd/list.c: put SLinks in free lists 2873 * ircd/channel.c: put Memberships in free lists 2874 * ircd/ircd.c: rearrange initializations a bit in main 2875 Note: With these changes, ircd NEVER frees Clients, SLinks or 2876 Memberships. It will also rarely need to allocate new 2877 ones during net bursts and other disruptions. This should 2878 cut down on memory fragmentation a bit as well. 2879 28802000-08-30 Kevin L. Mitchell <klmitch@mit.edu> 2881 2882 * ircd/m_names.c (do_names): pull-up from do_names fix in 2883 u2.10.10.pl11 2884 28852000-07-15 Perry Lorier <Isomer@coders.net> 2886 * various: IP only k:'s and G:'s now do bit tests instead of two(!) 2887 match()'s. Major Major cpu savings. Also speed up the 2888 other case slightly. As a side effect you can now 2889 k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing 2890 3am. 2891 28922000-07-15 Perry Lorier <Isomer@coders.net> 2893 * various: Fixed warnings after compiling on an alpha. 28942000-07-09 Perry Lorier <Isomer@coders.net> 2895 * doc/ircd.8: Applied grammitical changes by Liandrin, applied 2896 changes suggested by various other people. 2897 * ircd/IPcheck.c: More bug fixes. Current problem appears to be 2898 that it gets a corrupt entry somehow. 28992000-07-09 Greg Sikorski <gte@atomicrevs.demon.co.uk> 2900 * ircd/m_oper.c: Clean up compiler warning. 2901 29022000-07-08 Perry Lorier <Isomer@coders.net> 2903 * doc/ircd.8: Updated the documentation, it was slightly out of date 2904 being updated around 1989. 2905 * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed. 2906 fixed a few minor glitches. 2907 * doc/rfc1459.unet: Updated. 2908 * ircd/IPcheck.c: Fixed more bugs. 2909 * ircd/s_bsd.c: We now keep track of servers we've conected. 2910 29112000-07-02 Perry Lorier <Isomer@coders.net> 2912 * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue 2913 me. Thanks to Hektik, thanks thanks thanks thanks 2914 thanks thanks thanks thanks thank thanks thank thanks 2915 29162000-07-01 Perry Lorier <Isomer@coders.net> 2917 * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s. 2918 * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings. 2919 29202000-06-22 Perry Lorier <Isomer@coders.net> 2921 * ircd/IPcheck.c: Large chunks redone. 2922 * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported, 2923 single AND double digit limits are allowed now. 2924 * misc other: Changes to IPcheck. 2925 29262000-06-30 Perry Lorier <Isomer@coders.net> 2927 * ircd/ircd.c: Fix command line parameter bugs. 2928 29292000-06-30 Perry Lorier <Isomer@coders.net> 2930 * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY 2931 * ircd/m_nick.c: Tidied things up. 2932 29332000-06-12 Joseph Bongaarts <foxxe@trms.com> 2934 * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v 2935 29362000-05-29 Perry Lorier <Isomer@coders.net> 2937 * ircd/m_stats.c: add /stats v to do only the last part of the /trace 2938 * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do 2939 you think it'll get bored and fix itself? 2940 29412000-06-09 Greg Sikorski <gte@atomicrevs.demon.co.uk> 2942 2943 * ircd/m_names.c: Clean up compiler warnings. 2944 29452000-06-09 Kevin L. Mitchell <klmitch@mit.edu> 2946 2947 * ircd/channel.c (mode_parse_client): don't send warning if 2948 there's not enough arguments for a +/-o/v; means the habit of 2949 doing "/mode #channel +oooooo bob" doesn't result in a bunch of 2950 error messages 2951 29522000-06-04 Greg Sikorski <gte@atomicrevs.demon.co.uk> 2953 2954 * ircd/m_names.c: Re-factor code to remove unneccessary 2955 GlobalChannelList iteration every time someone joins a channel. 2956 29572000-06-02 Kevin L. Mitchell <klmitch@mit.edu> 2958 2959 * ircd/s_user.c: add struct Gline * argument to register_user; 2960 look up global glines and repropagate them if necessary; send 2961 acknowledgement of gline to remote servers when registering users 2962 2963 * ircd/s_serv.c (server_estab): don't send acknowledgement of 2964 local glines to remote servers; do send gline acknowledgement of 2965 bursted users 2966 2967 * ircd/m_user.c (m_user): pass new struct Gline * argument to 2968 register_user 2969 2970 * ircd/m_pong.c: pass new struct Gline * argument to register_user 2971 2972 * ircd/m_nick.c (ms_nick): document protocol change 2973 2974 * ircd/gline.c: support GLINE_LASTMOD 2975 2976 * include/s_user.h: add struct Gline * argument to register_user 2977 2978 * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods 2979 2980 * ircd/s_conf.c (find_kill): add unsigned int argument to 2981 gline_lookup() 2982 2983 * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global 2984 glines; add unsigned int argument to gline_lookup() 2985 2986 * include/gline.h: add GLINE_GLOBAL flag; add unsigned int 2987 argument to gline_lookup() 2988 2989 * ircd/m_server.c: Resend jupe only when there is no %<lastmod> 2990 parameter, or when it falls out of bounds: see comments prior to 2991 call to jupe_resend(); call server_estab with struct Jupe 2992 parameter, so that we place the appropriate %<lastmod> in the 2993 appropriate place. 2994 2995 * ircd/s_serv.c (server_estab): send %<lastmod> for introduced 2996 server, as well as for servers when we're sending the BURST 2997 2998 * include/s_serv.h: add a struct Jupe * to the arguments for 2999 server_estab() so that we can send the appropriate lastmod 3000 parameter 3001 3002 * ircd/m_gline.c (ms_gline): actually, this should be the 3003 slightest bit more efficient... 3004 3005 * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest 3006 bit more efficient... 3007 3008 * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends 3009 during netburst 3010 3011 * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during 3012 netburst 3013 3014 * ircd/channel.c (joinbuf_join): really remove user from local 3015 channels 3016 30172000-05-29 Perry Lorier <Isomer@coders.net> 3018 * ircd/m_names.c: Removed redundant space. 3019 * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line. 3020 30212000-05-18 Kevin L. Mitchell <klmitch@mit.edu> 3022 3023 * ircd/m_burst.c (ms_burst): er...that should have been a ",", not 3024 a " " 3025 30262000-05-04 Kevin L. Mitchell <klmitch@mit.edu> 3027 3028 * ircd/channel.c: replace bogus assertions with returns, which is 3029 logically correct; only wipe out limit/key if they were originally 3030 set in the first place; remove user from channel when doing a 3031 PARTALL; only send MODE +o for user CREATEing channel if user is 3032 not MyUser--CREATE will only be used if the channel did not 3033 originally exist, therefore we can assume no one local is on the 3034 channel anyway, and we don't exactly need for the user to see an 3035 explicit +o for themselves 3036 3037 * doc/readme.gline: describe the syntax of the GLINE command 3038 3039 * doc/readme.jupe: update to reflect a couple of changes to JUPE 3040 3041 * ircd/gline.c: don't propagate local changes 3042 3043 * ircd/jupe.c: don't propagate local changes 3044 3045 * ircd/m_gline.c (mo_gline): force local flag when deactivating 3046 glines with 0 lastmod 3047 3048 * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time 3049 are now removed instead of being deactivated 3050 3051 * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE * 3052 -<mask>" be accepted 3053 3054 * ircd/channel.c (send_channel_modes): deal with one of the last 3055 vestiges of sendbuf 3056 3057 * ircd/m_burst.c (ms_burst): debugged ban processing; removed 3058 debugging hooks 3059 3060 * ircd/channel.c (modebuf_extract): remove debugging 3061 sendto_opmask_butone calls 3062 30632000-05-03 Kevin L. Mitchell <klmitch@mit.edu> 3064 3065 * ircd/channel.c: support a couple of new flags to support using 3066 mode_parse; fix some bugs with 0 struct ModeBuf *; implementation 3067 of modebuf_extract to extract added flags for use by ms_burst 3068 3069 * include/channel.h: a couple of new flags to support using 3070 mode_parse inside ms_burst 3071 3072 * ircd/m_burst.c (ms_burst): brand new implementation of BURST 3073 3074 * ircd/m_endburst.c: add loop to processing of end_of_burst to 3075 free empty channels after the BURST is over. 3076 3077 * ircd/m_server.c: convert to use new send.c functions--I wanted 3078 to rewrite it from scratch, but the logic's pretty complex; I may 3079 still rewrite it, though... 3080 30812000-05-02 Thomas Helvey <tomh@inxpress.net> 3082 3083 * ircd/ircd.c: fix broken header include ordering 3084 30852000-05-02 Thomas Helvey <tomh@inxpress.net> 3086 3087 * ircd/IPcheck.c: cleanups for ZenShadow's cleanups 3088 review emailed privately 3089 3090 * include/IPcheck.h: removed unneeded include 3091 30922000-05-02 Kevin L. Mitchell <klmitch@mit.edu> 3093 3094 * ircd/s_user.c (hunt_server): throw in a comment so I know what 3095 the sendto_one is for 3096 3097 * include/querycmds.h (Count_unknownbecomesclient): convert to 3098 sendto_opmask_butone 3099 3100 * ircd/send.c: start removing dead code 3101 3102 * include/send.h: start removing dead code 3103 3104 * ircd/m_rping.c: convert to sendcmdto_one / send_reply / 3105 hunt_server_cmd 3106 3107 * ircd/m_rpong.c: convert to sendcmdto_one / send_reply 3108 31092000-05-01 Kevin L. Mitchell <klmitch@mit.edu> 3110 3111 * ircd/m_stats.c: convert to sendcmdto_one / send_reply 3112 3113 * ircd/m_kick.c: Completely reimplement m_kick 3114 3115 * ircd/channel.c: send_user_joins removed; it was dead code, 3116 anyway... 3117 31182000-05-01 Perry Lorier <isomer@coders.net> 3119 * ircd/m_invite.c: Fix for the rest of m_invite.c, and again. 3120 * ircd/channels.c: My fix for the part problem. Untested, probably 3121 won't work. Can't be much worse than the current problem. 3122 it'll either work or core, take your pick. 3123 3124 31252000-04-30 Perry Lorier <isomer@coders.net> 3126 * config/config-sh.in: Fix for CONNEXIT 3127 * ircd/s_{user,misc}.c: Fix for CONNEXIT 3128 * ircd/m_invite.c: Fix for incorrectly numnickified invite. 3129 (Kev: Want to come talk to me about this?) 3130 31312000-04-30 Steven M. Doyle <steven@doyle.net> 3132 * ircd/ircd.c 3133 - general cleanups and readability enhancements 3134 - rewrite of setuid/chroot code. 3135 - server will no longer run as root 3136 - -DPROFIL compile option removed 3137 - Fixed IPcheck API calls 3138 3139 * config/config-sh.in 3140 - Fixed up chroot compile options 3141 - Added options for debug and profile compiles 3142 3143 * config/gen.ircd.Makefile 3144 - Support for new debug/profile options 3145 3146 * ircd/Makefile.in 3147 - Support for new debug/profile options 3148 3149 * ircd/ircd_signal.c 3150 - Removed -DPROFIL 3151 3152 * include/IPcheck.h 3153 - Removed old API prototypes, added new ones 3154 3155 * ircd/IPcheck.c 3156 - Readability cleanups (well, I -think-...) 3157 - Changed IPRegistryEntry.last_connect to a time_t. The previously 3158 used unsigned short was probably causing interesting things after 3159 a client had been connected longer than about 65,535 seconds... 3160 - Removed old API functions. 3161 3162 * ircd/whocmds.c 3163 - Removed IPcheck.h include 3164 3165 * Additionally modified IPcheck API calls in: 3166 - ircd/m_nick.c 3167 - ircd/m_auth.c 3168 - ircd/s_bsd.c 3169 - ircd/s_conf.c 3170 - ircd/s_misc.c 3171 - ircd/s_serv.c 3172 - ircd/s_user.c 3173 3174 31752000-04-30 Perry Lorier <isomer@coders.net> 3176 * ircd/s_bsd.c: Sigh. :) 3177 * ircd/m_mode.c: fix for modeless channels by poptix. 3178 31792000-04-29 Kevin L. Mitchell <klmitch@mit.edu> 3180 3181 * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf 3182 3183 * ircd/channel.c (clean_channelname): make clean_channelname also 3184 truncate long channel names 3185 31862000-04-28 Kevin L. Mitchell <klmitch@mit.edu> 3187 3188 * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf 3189 3190 * ircd/channel.c: implemented joinbuf_init, joinbuf_join, 3191 joinbuf_flush 3192 3193 * include/channel.h: definitions and declarations for the struct 3194 JoinBuf abstraction 3195 31962000-04-29 Perry Lorier <isomer@coders.net> 3197 * ircd/s_bsd.c: Ok, so I thought I compiled and tested this... 3198 31992000-04-29 Perry Lorier <isomer@coders.net> 3200 * ircd/s_bsd.c: Add debugging code to IPcheck 3201 32022000-04-28 Kevin L. Mitchell <klmitch@mit.edu> 3203 3204 * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT 3205 3206 * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of 3207 RPL_EXPLICIT 3208 3209 * ircd/m_userhost.c (m_userhost): add a dead code comment 3210 3211 * ircd/m_desynch.c: forgot one... 3212 3213 * ircd/m_rehash.c (mo_rehash): er, duplicates :) 3214 3215 * ircd/m_proto.c (proto_send_supported): just change a comment so 3216 it doesn't show up in my scans 3217 3218 * ircd/ircd_reply.c (send_reply): fix a slight bug... 3219 3220 * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions, 3221 kinda hackish... 3222 3223 * ircd/parse.c (parse_server): argument wrangling to make 3224 processing in do_numeric a little easier to deal with 3225 3226 * ircd/s_serv.c (server_estab): SERVER should come from 3227 acptr->serv->up, not &me 3228 3229 * ircd/m_lusers.c: accidentally left out sptr for a %C 3230 3231 * ircd/send.c: hack to support doing wallchops... 3232 3233 * ircd/m_whowas.c: convert to new send functions 3234 3235 * ircd/m_whois.c: convert to new send functions 3236 3237 * ircd/m_who.c: convert to new send functions 3238 3239 * ircd/m_wallops.c: convert to new send functions 3240 3241 * ircd/m_wallchops.c: convert to new send functions 3242 3243 * ircd/m_version.c: convert to new send functions 3244 3245 * ircd/m_userip.c: convert to new send functions 3246 3247 * ircd/m_userhost.c: convert to new send functions 3248 3249 * ircd/m_uping.c: convert to new send functions 3250 3251 * ircd/m_trace.c: convert to new send functions 3252 3253 * ircd/m_topic.c: convert to new send functions 3254 3255 * ircd/m_time.c: convert to new send functions 3256 3257 * ircd/m_squit.c: convert to new send functions 3258 3259 * ircd/m_silence.c: convert to new send functions 3260 3261 * ircd/m_settime.c: convert to new send functions 3262 3263 * ircd/m_restart.c: convert to new send functions 3264 3265 * ircd/m_rehash.c: convert to new send functions 3266 3267 * ircd/m_privmsg.c: convert to new send functions 3268 3269 * ircd/m_pong.c: convert to new send functions 3270 3271 * ircd/m_ping.c: convert to new send functions 3272 3273 * ircd/m_pass.c: convert to new send functions 3274 3275 * ircd/m_opmode.c: convert to new send functions 3276 3277 * ircd/m_oper.c: convert to new send functions 3278 3279 * ircd/m_notice.c: convert to new send functions 3280 3281 * ircd/m_nick.c: convert to new send functions 3282 3283 * ircd/m_names.c: convert to new send functions 3284 3285 * ircd/m_motd.c: convert to new send functions 3286 3287 * ircd/m_mode.c: convert to new send functions 3288 3289 * ircd/m_map.c: convert to new send functions 3290 3291 * ircd/m_lusers.c: convert to new send functions 3292 3293 * ircd/m_list.c: convert to new send functions 3294 3295 * ircd/m_links.c: convert to new send functions 3296 3297 * ircd/m_kill.c: convert to new send functions 3298 3299 * ircd/m_jupe.c: convert to new send functions 3300 3301 * ircd/m_invite.c: convert to new send functions 3302 3303 * ircd/m_info.c: convert to new send functions 3304 3305 * ircd/m_help.c: convert to new send functions 3306 3307 * ircd/m_gline.c: convert to new send functions 3308 3309 * ircd/m_error.c: convert to new send functions 3310 3311 * ircd/m_endburst.c: convert to new send functions 3312 3313 * ircd/m_die.c: convert to new send functions 3314 3315 * ircd/m_destruct.c: convert to new send functions 3316 3317 * ircd/m_defaults.c: convert to new send functions 3318 3319 * ircd/m_connect.c: convert to new send functions 3320 33212000-04-28 Perry Lorier <isomer@coders.net> 3322 * RELEASE.NOTES: Describe a few more undocumented features. 3323 * config/config-sh.in: change the default paths for logging 3324 and the recommended number of channels. 3325 * include/supported.h: Rearrange slightly, added CHANTYPE's 3326 33272000-04-27 Kevin L. Mitchell <klmitch@mit.edu> 3328 3329 * ircd/m_close.c: convert to send_reply 3330 3331 * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone 3332 3333 * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone 3334 3335 * ircd/m_admin.c: convert to send_reply and hunt_server_cmd 3336 3337 * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement 3338 that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION 3339 HAS A MAJOR HACK!!! The whole hunt_server architecture should be 3340 carefully rethought... 3341 3342 * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd 3343 3344 * include/s_user.h: hunt_server_cmd -- replacement for hunt_server 3345 3346 * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by 3347 numeric nick; therefore, we have to use the server name 3348 3349 * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick 3350 3351 * ircd/send.c: fix minor bugs 3352 3353 * ircd/s_user.c (check_target_limit): mark dead code so I filter 3354 it when I grep 3355 3356 * ircd/s_serv.c (exit_new_server): mark dead code so I filter it 3357 when I grep 3358 3359 * ircd/parse.c: mark dead code so I filter it when I grep 3360 3361 * ircd/map.c: mark dead code so I filter it when I grep 3362 3363 * ircd/ircd.c: mark dead code so I filter it when I grep 3364 3365 * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply 3366 functions 3367 3368 * ircd/channel.c: mark dead code so I filter it when I grep 3369 3370 * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str; 3371 hope I'm not stepping on toes... 3372 3373 * ircd/s_conf.c: more sendto_opmask_butone / send_reply 3374 conversions; use ircd_snprintf in a couple of cases to negate the 3375 possibility of buffer overflow 3376 33772000-04-26 Kevin L. Mitchell <klmitch@mit.edu> 3378 3379 * ircd/channel.c: convert as much as possible to new send 3380 semantics 3381 3382 * ircd/send.c (sendcmdto_common_channels): fix a subtle bug -- 3383 test member->user->from->fd, not from->fd 3384 3385 * ircd/gline.c (gline_add): go ahead and add badchans; we just 3386 won't look for them in m_gline; this way, they always work... 3387 3388 * ircd/jupe.c: use ircd_vsnprintf conversion specifiers 3389 3390 * ircd/gline.c: since write_log now uses ircd_vsnprintf, use 3391 ircd_vsnprintf conversion specifiers 3392 3393 * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so 3394 I have my conversion specifiers 3395 3396 * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP 3397 3398 * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to 3399 local users 3400 3401 * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a 3402 little less brain-dead 3403 3404 * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply 3405 3406 * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for 3407 RPL_STATSDEBUG 3408 3409 * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for 3410 RPL_STATSDEBUG 3411 3412 * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT 3413 for RPL_STATSDEBUG 3414 3415 * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING 3416 3417 * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING 3418 3419 * ircd/s_user.c (register_user): use RPL_EXPLICIT for 3420 ERR_INVALIDUSERNAME 3421 3422 * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT 3423 3424 * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark 3425 a numeric as needing to use an explicit pattern, which will be the 3426 first argument in the variable argument list 3427 3428 * ircd/s_user.c: use sendrawto_one instead of sendto_one to send 3429 non-prefixed nospoof PING 3430 3431 * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send 3432 non-prefixed SERVER login 3433 3434 * ircd/ircd.c (check_pings): fix last sendto_one calls (except for 3435 a numeric usage further up) 3436 3437 * include/send.h: declare sendrawto_one 3438 3439 * ircd/send.c (sendrawto_one): new function to use ONLY for 3440 non-prefixed commands, like PING to client, or PASS/SERVER on 3441 server registration 3442 34432000-04-25 Kevin L. Mitchell <klmitch@mit.edu> 3444 3445 * ircd/ircd_snprintf.c (doprintf): implement %H for possible 3446 future expansion (channel numerics?) 3447 3448 * include/ircd_snprintf.h: added documentation to # to explain use 3449 with %C; added documentation for : to explain use with %C; added 3450 documentation for %H for channels 3451 3452 * ircd/whocmds.c: use send_reply 3453 3454 * ircd/userload.c: use sendcmdto_one 3455 3456 * ircd/uping.c: use sendcmdto_one 3457 3458 * ircd/send.c: use new flags to %C format string; ':' prefixes 3459 client name with a colon for local connects, '#' uses 3460 nick!user@host form for local connects 3461 3462 * ircd/s_user.c: use send_reply, sendto_opmask_butone, 3463 sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone 3464 3465 * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone 3466 3467 * ircd/s_bsd.c: use sendto_opmask_butone, send_reply, 3468 sendcmdto_one 3469 3470 * ircd/s_auth.c: use sendto_opmask_butone 3471 3472 * ircd/res.c: use sendcmdto_one 3473 3474 * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some 3475 debugging assertions 3476 34772000-04-24 Kevin L. Mitchell <klmitch@mit.edu> 3478 3479 * ircd/support.c: dumpcore is no longer used, so get rid of it 3480 3481 * ircd/parse.c: use send_reply, sendcmdto_one 3482 3483 * ircd/map.c: use send_reply 3484 3485 * ircd/listener.c: use send_reply 3486 3487 * ircd/jupe.c: use sendto_opmask_butone, send_reply 3488 3489 * ircd/ircd_reply.c: use send_reply 3490 3491 * ircd/ircd.c: use sendto_opmask_butone 3492 3493 * ircd/gline.c: use sendto_opmask_butone, send_reply 3494 3495 * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely 3496 registered clients; make FLAG_ALT print nick!user@host; make 3497 FLAG_COLON print :blah 3498 3499 * ircd/class.c (report_classes): use send_reply instead of 3500 sendto_one 3501 3502 * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one 3503 3504 * ircd/IPcheck.c (ip_registry_connect_succeeded): replace 3505 sendto_one with sendcmdto_one 3506 35072000-04-21 Kevin L. Mitchell <klmitch@mit.edu> 3508 3509 * ircd/send.c: clean up logic in sendcmdto_channel_butone; use 3510 MyConnect() instead of IsServer() in sendcmdto_flag_butone; define 3511 sendcmdto_match_butone 3512 3513 * include/send.h: declare sendcmdto_match_butone 3514 35152000-04-20 Kevin L. Mitchell <klmitch@mit.edu> 3516 3517 * ircd/jupe.c: update to use send_reply() 3518 3519 * ircd/gline.c: update to use send_reply() 3520 3521 * include/ircd_reply.h: declare send_reply 3522 3523 * ircd/ircd_reply.c (send_reply): send_error_to_client, but for 3524 replies; uses ircd_snprintf 3525 3526 * ircd/send.c: added comments to redirect searchers to appropriate 3527 sendcmdto_* function; moved new functions to end of file; added 3528 explanatory comments; reordered arguments; defined new functions 3529 mentioned below 3530 3531 * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions 3532 3533 * ircd/m_gline.c: reorder arguments to sendcmdto_* functions 3534 3535 * ircd/jupe.c: reorder arguments to sendcmdto_* functions 3536 3537 * ircd/gline.c: reorder arguments to sendcmdto_* functions 3538 3539 * include/send.h: reorder arguments, add explanatory comments, 3540 declare new functions sendcmdto_flag_butone, sendto_opmask_butone, 3541 and vsendto_opmask_butone 3542 35432000-04-19 Kevin L. Mitchell <klmitch@mit.edu> 3544 3545 * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified 3546 vsendto_op_mask that uses '*' instead of the receiving client 3547 nickname 3548 3549 * include/send.h: declare sendcmdto_channel_butone; takes a skip 3550 argument that allows you to skip (or not to skip) deaf users, 3551 users behind bursting servers, and non channel operators 3552 35532000-04-17 Kevin L. Mitchell <klmitch@mit.edu> 3554 3555 * ircd/send.c: new sendcmdto_channel_butserv -- note that old 3556 sendto_channel_butserv has a subtle bug; also wrote 3557 sendcmdto_common_channels. 3558 3559 * include/send.h: declare new sendcmdto_* functions 3560 3561 * ircd/jupe.c: support local deactivations of jupes 3562 3563 * ircd/gline.c: support local deactivations of glines 3564 3565 * include/jupe.h: JUPE_LDEACT allows jupes to be locally 3566 deactivated; if they aren't locally deactivated, then it slaves to 3567 the net-wide activation status; JupeIsRemActive() tests only 3568 whether the jupe is active everywhere else 3569 3570 * include/gline.h: GLINE_LDEACT allows glines to be locally 3571 deactivated; if they aren't locally deactivated, then it slaves to 3572 the net-wide activation status; GlineIsRemActive() tests only 3573 whether the gline is active everywhere else 3574 3575 * ircd/gline.c: detect overlapping G-lines; if an existing, wider 3576 gline expires after the new one will, we drop the new one, 3577 otherwise we add the G-line after that one (so the wide one will 3578 apply first); if the new one contains an existing G-line and if it 3579 will expire after the existing one, we drop the existing one to 3580 save memory 3581 3582 * ircd/m_gline.c (mo_gline): opers could issue remote local 3583 glines when CONFIG_OPERCMDS was off; fixed 3584 35852000-04-16 Kevin L. Mitchell <klmitch@mit.edu> 3586 3587 * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if 3588 this is a local JUPE 3589 3590 * ircd/gline.c: add flags argument to gline_activate and 3591 gline_deactivate for future expansion 3592 3593 * ircd/m_gline.c: pass flags to gline_activate and 3594 gline_deactivate 3595 3596 * include/gline.h: add flags argument to gline_activate and 3597 gline_deactivate 3598 3599 * ircd/jupe.c: add flags argument to jupe_activate and 3600 jupe_deactivate for future expansion 3601 3602 * include/jupe.h: add flags argument to jupe_activate and 3603 jupe_deactivate 3604 3605 * ircd/m_jupe.c: pass a flags argument to jupe_add instead of 3606 local, active; pass flags to jupe_activate and jupe_deactivate 3607 3608 * include/gline.h: remove dead code 3609 3610 * ircd/gline.c: make gline expire times relative to CurrentTime, 3611 since that should be monotonically increasing, instead of 3612 TStime(), which can be set backwards, and which can therefore 3613 cause an expire time to increase; make local glines be removed 3614 instead of just deactivated; don't let gline_find() look for 3615 user@host glines if the mask being looked up is a channel mask 3616 3617 * ircd/send.c (vsendcmdto_one): forgot to account for the case 3618 where origin is a server and destination is a user 3619 3620 * ircd/jupe.c: make jupe expire times relative to CurrentTime, 3621 since that should be monotonically increasing, instead of 3622 TStime(), which can be set backwards, and which can therefore 3623 cause an expire time to increase; make local jupes be removed 3624 instead of just deactivated 3625 3626 * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for 3627 limit is fine. any other warnings I should know about? 3628 36292000-04-15 Thomas Helvey <tomh@inxpress.net> 3630 3631 * ircd/*.c: const correctness and type safety cleanups to 3632 get code to compile with C++ compiler. Still has 3633 signed/unsigned comparison warnings. 3634 36352000-04-15 Greg Sikorski <gte@atomicrevs.demon.co.uk> 3636 3637 * ircd/userload.c: change <sys/time.h> include to <time.h> for 3638 portability. 3639 36402000-04-14 Kevin L. Mitchell <klmitch@mit.edu> 3641 3642 * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C 3643 and convert acptr... 3644 3645 * ircd/s_user.c: move gline_lookup function call into 3646 register_user, where it'll have a username to lookup! 3647 3648 * ircd/m_gline.c: modify to utilize new sendcmdto_* series of 3649 functions; also stuff send_error_to_client into return clauses 3650 3651 * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of 3652 functions; also use send_error_to_client where that makes sense 3653 3654 * ircd/jupe.c: modify to utilize new sendcmdto_* series of 3655 functions; also use send_error_to_client where that makes sense 3656 3657 * ircd/gline.c: modify to utilize new sendcmdto_* series of 3658 functions; also fix gline_lookup() to deal properly with remote 3659 clients--boy, do struct Client and struct User need to be cleaned 3660 up! 3661 3662 * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server, 3663 too... 3664 3665 * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and 3666 sendcmdto_serv_butone(), all utilizing the %v conversion of 3667 ircd_snprintf() 3668 3669 * include/send.h: define IRC_BUFSIZE, max size of a message; 3670 declare sendcmdto_one(), vsendcmdto_one(), and 3671 sendcmdto_serv_butone() 3672 3673 * include/msg.h: define all the CMD_* constants needed to utilize 3674 the new sendcmdto_* series of functions 3675 3676 * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend 3677 3678 * ircd/gline.c: remove old, dead code. 3679 3680 * ircd/m_gline.c (mo_gline): disallow setting of global G-lines 3681 unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines 3682 (don't advertise proxies); remove dead code 3683 3684 * ircd/parse.c: oper handler for JUPE only lists jupes unless 3685 CONFIG_OPERCMDS is enabled 3686 3687 * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if 3688 CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c 3689 3690 * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled, 3691 always return ERR_DISABLED 3692 3693 * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not 3694 enabled, always return ERR_DISABLED 3695 3696 * ircd/s_err.c: add error message to indicate disabled commands 3697 3698 * include/numeric.h (ERR_DISABLED): to indicate disabled commands 3699 3700 * doc/Configure.help: add documentation for CONFIG_OPERCMDS 3701 3702 * config/config-sh.in: add CONFIG_OPERCMDS, default both it and 3703 CONFIG_NEW_MODE to 'y' for now 3704 3705 * ircd/gline.c (gline_list): fix a minor formatting bogon 3706 3707 * BUGS: since I fixed that bug, might as well mark it fixed. 3708 3709 * ircd/m_join.c: look up badchans with GLINE_EXACT 3710 3711 * ircd/m_gline.c: fix parc count problems; look up existing 3712 G-lines with GLINE_EXACT; only set new lastmod when 3713 activating/deactivating existing glines if old lastmod was not 0 3714 3715 * ircd/gline.c: forgot to copy the gline reason over; don't 3716 propagate a gline with 0 lastmod if origin is user; add 3717 GLINE_EXACT to force exact matching of gline mask 3718 3719 * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero 3720 flag properly 3721 3722 * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost, 3723 but gline_lookup() actually takes a client--d'oh. 3724 37252000-04-13 Thomas Helvey <tomh@inxpress.net> 3726 * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10 3727 37282000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk> 3729 3730 * ircd/whocmds.c: Don't make idle flag default in /who, to prevent: 3731 "/who * x" 3732 "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was." 3733 (Found by Plexus). 3734 3735 * ircd/whocmds.c: Change idle time calc from socket idle to user 3736 idle. 3737 37382000-04-13 Kevin L. Mitchell <klmitch@mit.edu> 3739 3740 * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *, 3741 too, for ircd_snprintf.c 3742 3743 * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in 3744 comments; mostly descended from the Linux manpage for printf, but 3745 also documenting the extensions. 3746 3747 * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a 3748 client; make 'q' be the same as 'L'; remove __inline__; only 3749 define EXTENSION if HAVE_LONG_LONG is defined 3750 3751 * include/handlers.h: declare m_gline() 3752 3753 * ircd/parse.c: gline can be called by users, but it only lists 3754 the glines. 3755 3756 * ircd/s_user.c (set_nick_name): resend gline if a remote server 3757 introduces a glined client 3758 3759 * ircd/s_serv.c (server_estab): burst glines, too 3760 3761 * ircd/gline.c: fix up all the expire times to be offsets; 3762 simplify gline_resend() 3763 3764 * ircd/m_gline.c: begin coding replacements for ms_gline(), 3765 mo_gline(), and m_gline() 3766 3767 * ircd/gline.c (gline_add): allow *@#channel to work correctly; 3768 also, prohibit local BADCHANs if LOCAL_BADCHAN not defined 3769 37702000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk> 3771 3772 * tools/Bouncer/*: Add comments/documentation/tags. 3773 * tools/Bouncer/*: Add debug defines, make task fork(). 3774 37752000-04-12 Thomas Helvey <tomh@inxpress.net> 3776 * ircd/s_err.c: Cleanup s_err.c make one table so we 3777 don't have to do anything tricky to get an error string. 3778 37792000-04-12 Greg Sikorski <gte@atomicrevs.demon.co.uk> 3780 * Add port bouncer for http (x/w) 3781 37822000-04-12 Kevin L. Mitchell <klmitch@mit.edu> 3783 3784 * ircd/s_conf.c (find_kill): replaced call to find_gline() with a 3785 call to gline_find(); also used GlineReason() instead of direct 3786 reference to structure member 3787 3788 * ircd/m_join.c (m_join): replace bad_channel() calls with calls 3789 to gline_find(name, GLINE_BADCHAN), and also check to see if gline 3790 is active 3791 3792 * ircd/channel.c: nothing seems to be called anywhere... 3793 3794 * ircd/s_err.c: update a couple of replies to dovetail with new 3795 semantics 3796 3797 * ircd/gline.c: begin complete re-implementation of gline.c along 3798 the lines of the final design of jupe.c 3799 3800 * include/gline.h: begin complete re-implementation of gline.c 3801 along the lines of the final design of jupe.c 3802 3803 * ircd/channel.c (mode_process_clients): fix "Deop of +k user on 3804 %s by %s" message... 3805 3806 * ircd/ircd_snprintf.c: my new snprintf()-like functions 3807 3808 * include/ircd_snprintf.h: my new snprintf()-like functions 3809 38102000-04-11 Thomas Helvey <tomh@inxpress.net> 3811 * ircd/IPcheck.c: removed old dead code 3812 * ircd/s_user.c (send_user_info): removed non-standard 3813 user not found message for userhost/userip 3814 38152000-04-11 Greg Sikorski <gte@atomicrevs.demon.co.uk> 3816 3817 * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric. 3818 * doc/p10.html: Work on chapter 4. 3819 38202000-04-10 Kevin L. Mitchell <klmitch@mit.edu> 3821 3822 * ircd/channel.c (mode_parse_client): fix coredump on /mode 3823 #foobar +o nosuchnick 3824 38252000-04-10 Perry Lorier <Isomer@coders.net> 3826 * BUGS: Added bug. 3827 38282000-04-09 Thomas Helvey <tomh@inxpress.net> 3829 * include/IPcheck.h: fix prototype 3830 * ircd/s_user.c: fix usage of IPcheck_remote_connect 3831 * ircd/IPcheck.c: removed unused args 3832 38332000-04-09 Thomas Helvey <tomh@inxpress.net> 3834 * include/IPcheck.h: add proto for IPcheck_expire 3835 3836 * ircd/IPcheck.c: Rewrote 3837 3838 * ircd/ircd.c: Add IPcheck_expire to main message loop 3839 3840 * ircd/s_user.c: Redo target hashing, refactor target code 3841 3842 * include/numeric.h: Cleaned up numerics, added which ones are 3843 in use by other networks and what they are in use for. 3844 3845 * ircd/channel.c: cleaned can_join(), allow anyone through anything 3846 if /invited, simplified the function. Opers overusing OPEROVERRIDE 3847 will get a message explaining to them not to cheat. 3848 3849 * ircd/m_join.c: cleaned up the various join functions, should be 3850 a lot more efficient. Still needs work. Now assumes that s<->s 3851 won't send it a JOIN 0. Service coders - note this and tread with 3852 care. 3853 3854 * ircd/m_stats.c: added Gte-'s stats doc patch. 3855 3856 * ircd/m_version.c: /version now returns the 005 numeric as well. 3857 as requested by Liandrin. 3858 3859 38602000-04-07 Kevin L. Mitchell <klmitch@mit.edu> 3861 3862 * ircd/m_clearmode.c: add include for support.h for write_log() 3863 3864 * configure: move ircd/crypt/* to tools/* 3865 38662000-04-06 Thomas Helvey <tomh@inxpress.net> 3867 * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds 3868 set client host to server alias if connection from localhost 3869 38702000-04-06 Perry Lorier <isomer@coders.net> 3871 * ircd/ircd.c: Fix core during pinging (oops) 3872 38732000-04-06 Perry Lorier <isomer@coders.net> 3874 * ircd/send.c: fixed wrong ident being sent to channels bug. 3875 * include/numerics.h: Updated some of the numerics from other 3876 networks. Flagged some as 'unused' by undernet. 3877 38782000-03-30 Perry Lorier <isomer@coders.net> 3879 * ircd/ircd.c: Lets see if this helps the ping problem at all. 3880 * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle 3881 time for local clients. (as requested), extended who now returns all 3882 the flags (@+!) so you can tell the complete state of a client. 3883 38842000-03-30 Thomas Helvey <tomh@inxpress.net> 3885 * m_rping.c m_rpong.c: add Gte's rping/rpong fixes 3886 38872000-03-30 Perry Lorier <isomer@coders.net> 3888 * ircd/parse.c: oops, missed opers. 3889 38902000-03-30 Perry Lorier <isomer@coders.net> 3891 * ircd/parse.c: fixed mystifying ping bug thats been plaguing us 3892 for so long. Remember: m_ping MUST be in the parse array. :) 3893 38942000-03-30 Perry Lorier <isomer@coders.net> 3895 * ircd/ircd.c: test in check_pings was wrong. I move that we 3896 disallow cvs commit after 10pm localtime.... 3897 38982000-03-30 Perry Lorier <isomer@coders.net> 3899 * ircd/m_pong.c: Fix it for servers too. 3900 39012000-03-30 Perry Lorier <isomer@coders.net> 3902 * ircd/m_pong.c: Fix ping timeout bugs 3903 39042000-03-30 Perry Lorier <isomer@coders.net> 3905 * ircd/channel.c: Bans had CurrentTime in their when field instead 3906 of TStime() 3907 39082000-03-31 Thomas Helvey <tomh@ixpress.net> 3909 * ircd/numnicks.c (SetXYYCapacity): fix for extended 3910 numerics. 3911 39122000-03-30 Perry Lorier <isomer@coders.net> 3913 * ircd/m_nick.c: send kills both ways so when we add nick change 3914 on collision we don't desync the network. 3915 3916 * ircd/map.c: Fixup the map a bit more. 3917 39182000-03-31 Kevin L. Mitchell <klmitch@mit.edu> 3919 3920 * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH 3921 3922 * ircd/m_opmode.c: Log the mode changes to OPATH 3923 3924 * ircd/channel.c (modebuf_flush_int): Log the mode changes to 3925 OPATH 3926 3927 * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to 3928 OPATH 3929 3930 * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH 3931 3932 * config/config-sh.in: added OPATH for opmode log file 3933 3934 * ircd/m_clearmode.c (do_clearmode): updated uses of 3935 modebuf_mode_string() for the new usage 3936 3937 * ircd/channel.c: added flag MODE_FREE and an int argument to 3938 modebuf_mode_string() to indicate that the string must be free'd; 3939 updated calls to modebuf_mode_string() for the new usage; called 3940 collapse(pretty_mask()) on the ban string and use allocated memory 3941 for it; added ban list length accounting; fixed a number of small 3942 bugs in ban processing 3943 3944 * include/channel.h: added flag MODE_FREE and an int argument to 3945 modebuf_mode_string() to indicate that the string must be free'd 3946 3947 * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed 3948 keys and limits that are set 3949 39502000-03-30 Perry Lorier <isomer@coders.net> 3951 * ircd/ircd.c: rewrote check_pings() for maintainability 3952 and speed. Also changed quit msg's so they don't have 3953 redundant nick[host] info in them. 3954 3955 * ircd/send.c: Changed write errors to report what error 3956 occured (if possible). 3957 3958 * ircd/gline.c: added gline comment to the quit. 3959 3960 * ircd/m_server.c: Added suggestions to server quits mentioning 3961 what went wrong so the admin can fix it earlier instead of asking 3962 questions... 3963 3964 * ircd/map.c: Changed m_map() to hide numerics, show a * beside 3965 servers that aren't fully burst yet. And show '(--s)' for servers 3966 where its not sure. 3967 3968 * doc/example.conf: Fixed wrapped U: 3969 39702000-03-30 Kevin L. Mitchell <klmitch@mit.edu> 3971 3972 * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of 3973 mode_parse() (version selectable at compile time) 3974 3975 * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1]) 3976 3977 * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1]) 3978 3979 * config/config-sh.in: add new config option to enable new m_mode 3980 implementation 3981 3982 * doc/Configure.help: add documentation for new config option 3983 CONFIG_NEW_MODE 3984 3985 * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461 3986 MODE -v : Not enough parameters 3987 3988 * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove 3989 +k and +l even if they weren't set... 3990 3991 * ircd/m_opmode.c: implement the OPMODE command using mode_parse() 3992 3993 * ircd/channel.c: make mode_process_clients() clear the DEOPPED 3994 flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list 3995 for; test the 0-th member, not the i-th member, of the client 3996 change state stuff 3997 3998 * ircd/m_clearmode.c (do_clearmode): use the new 3999 mode_invite_clear() function 4000 4001 * ircd/channel.c: cleared up all the compile-time warnings and 4002 errors 4003 4004 * include/channel.h: added declarations for mode_ban_invalidate() 4005 and mode_invite_clear() 4006 4007 * ircd/channel.c: finished mode_parse(), then broke it up into a 4008 dozen or so helper functions to make the code easier to read 4009 40102000-03-29 Thomas Helvey <tomh@inxpress.net> 4011 * ircd/ircd.c: refactor server initialization a bit, use 4012 getopt for parsing command line, refactor init_sys, main, 4013 and other bits. 4014 4015 * ircd/s_bsd.c: add functions for initialization to clean 4016 up logic a bit and remove duplicated code. 4017 4018 * include/ircd.h: add struct for server process related 4019 variables. 4020 40212000-03-29 Kevin L. Mitchell <klmitch@mit.edu> 4022 4023 * ircd/channel.c: initial definition of mode_parse(); flags to 4024 prevent doing the same thing multiple times; helper method 4025 send_notoper() to send a "Not oper"/"Not on channel" notice 4026 4027 * include/channel.h: declare mode_parse() and helper flags 4028 4029 * ircd/channel.c (modebuf_flush_int): fiddled with timestamp 4030 sending to match the current action of set_mode() closely enough 4031 that hopefully there won't be major conflicts 4032 4033 * ircd/channel.c (modebuf_flush_int): consolidated the mode string 4034 building logic, reversed the order of the arguments to mode 4035 commands to have '-' preceed '+' 4036 40372000-03-29 Thomas Helvey <tomh@inxpress.net> 4038 * ircd/s_bsd.c (add_connection): don't disable socket options 4039 let OS tune itself and allow important performance tweaks to 4040 work. 4041 40422000-03-28 Kevin L. Mitchell <klmitch@mit.edu> 4043 4044 * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got 4045 confused by set_mode, which is doing some really weird logic; 4046 guess what I'm going to rewrite next? ;) 4047 40482000-03-28 Kevin L. Mitchell <klmitch@emc.com> 4049 4050 * include/channel.h: added MODE_SAVE for the bounds checking stuff 4051 in modebuf_flush 4052 4053 * ircd/channel.c: make modebuf_flush into modebuf_flush_int and 4054 make it do bounds checking on the buffer; all modes are sent only 4055 if the all parameter is 1; modebuf_flush is the exported wrapper 4056 4057 * include/channel.h: add BOUNCE, renumber flags to get a little 4058 more space 4059 4060 * ircd/channel.c (modebuf_flush): don't overload HACK2, add 4061 BOUNCE; send DESYNCH message 4062 40632000-03-27 Kevin L. Mitchell <klmitch@emc.com> 4064 4065 * ircd/m_clearmode.c (do_clearmode): only mark the modes the 4066 channel actually has in effect for deletion 4067 4068 * ircd/channel.c: added explanatory comments to all added 4069 functions; made flushing take place at the correct place even if 4070 the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper 4071 to bash some stupid bugs; made modebuf_flush() return if ModeBuf 4072 is empty, fixed the apparent source, removed some bogus string 4073 termination code, properly terminate the mode strings, add support 4074 for HACK2 and HACK3, made limit strings not be sent if the limit 4075 is being removed, changed where '+' and '-' come from in sent 4076 strings, added support for DEOP flag, set up bouncing code for 4077 HACK2 4078 4079 * ircd/Makefile.in: ran make depend 4080 4081 * include/channel.h: added new defines for future functionality, 4082 made modebuf_flush() return int so I can use tail recursion 4083 4084 * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups 4085 to make it all compile 4086 4087 * ircd/m_opmode.c: add msg.h to includes... 4088 4089 * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan() 4090 4091 * ircd/channel.c (modebuf_flush): realized I forgot to 4092 nul-terminate addbuf/rembuf properly... 4093 4094 * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()... 4095 4096 * ircd/channel.c (modebuf_flush): correct sendto_server_butone to 4097 sendto_serv_butone--blah^2 4098 4099 * ircd/send.c (sendto_serv_butone): stupid comments confused me 4100 4101 * ircd/channel.c (modebuf_flush): if there are no mode changes to 4102 propagate, we're done... 4103 4104 * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone, 4105 not sendto_all_butone 4106 4107 * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode 4108 4109 * ircd/m_opmode.c: define skeleton for m{o,s}_opmode 4110 4111 * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to 4112 the list 4113 4114 * ircd/parse.c: added messages for opmode and clearmode 4115 4116 * include/handlers.h: added declarations for mo_opmode(), 4117 ms_opmode(), mo_clearmode(), and ms_clearmode() 4118 4119 * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and 4120 TOK_CLEARMODE 4121 4122 * include/channel.h (MODEBUF_DEST_OPMODE): Define the 4123 MODEBUF_DEST_OPMODE flag 4124 4125 * ircd/channel.c (modebuf_flush): added new flag, 4126 MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear 4127 to originate from source's server (or source itself, if 4128 IsServer(source)); also causes a server-level MODE to be sent as 4129 OPMODE instead 4130 4131 * include/channel.h: defined MODEBUF_DEST_SERVER, 4132 MODEBUF_DEST_HACK4 4133 4134 * ircd/channel.c: Add another argument to build_string() to handle 4135 numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to 4136 servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices 4137 to be sent out 4138 41392000-03-27 Perry Lorier <isomer@coders.net> 4140 4141 * ircd/s_bsd.c: fixed missing 'u' typo. 4142 41432000-03-26 Kevin L. Mitchell <klmitch@emc.com> 4144 4145 * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(), 4146 _mode_string(), _mode_client(), _flush(); also implemented a 4147 simple build_string() 4148 4149 * include/channel.h: added definition of ModeBuf, modebuf_* 4150 manipulation functions, and a couple of helper macros 4151 41522000-03-24 Thomas Helvey <tomh@inxpress.net> 4153 * numicks.c: convert extended numerics to use original mask version 4154 * numnicks.h: "" 4155 * s_user.c: 41562000-03-23 Thomas Helvey <tomh@inxpress.net> 4157 * Merge in changes from production 41582000-03-22 Thomas Helvey <tomh@inxpress.net> 4159 * numicks.c: Tweak to numnick generator to reduce possibility of duplicates. 4160 * rfc1459.unet: Add Maniac's documentation for /names 0 4161* Fix misc. jupe bugs that somehow made it into the tree 4162* Escape /names 0 to mean /names --Maniac 4163* Don't core when server asks for info --Maniac 4164* Add Kev's jupe patch --Bleep 4165* Add Maniacs squit patch --Bleep 4166* Merge in u2_10_10_beta07 changes --Bleep 4167* Merge in u2_10_10_beta06 changes --Bleep 4168* Start ircu2.10.11 development, beta branch u2_10_10 --Bleep 4169#----------------------------------------------------------------------------- 4170