diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-05-14 16:31:49 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-05-14 16:31:49 +0000 |
commit | cbb888a47064a8b70254047fd305bea73c2395ad (patch) | |
tree | 5e4e9eec35b169166e2a6589faa4ceeaaa0db45c | |
parent | 730d2a2c2af916b32a46c3f0792e99b3275839cc (diff) |
Allow for resizing of MAXBUF above/below 512 via non-interactive configure. (Some crazy mofo on the forums asked for this, good luck its your funeral :p)
THIS IS UNSUPPORTED BY US IF YOU CHANGE IT, WE WON'T EVEN TELL YOU HOW :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7022 e03df62e-2008-0410-955e-edbf42e46eb7
-rwxr-xr-x | configure | 60 | ||||
-rw-r--r-- | make/configure.pm | 3 | ||||
-rw-r--r-- | src/userprocess.cpp | 6 | ||||
-rw-r--r-- | src/users.cpp | 4 |
4 files changed, 40 insertions, 33 deletions
@@ -47,6 +47,7 @@ GetOptions ( 'with-ident-length=i' => \$opt_ident, 'with-quit-length=i' => \$opt_quit, 'with-topic-length=i' => \$opt_topic, + 'with-maxbuf=i' => \$opt_maxbuf, 'with-kick-length=i' => \$opt_kick, 'with-gecos-length=i' => \$opt_gecos, 'with-away-length=i' => \$opt_away, @@ -95,6 +96,7 @@ my $non_interactive = ( (defined $opt_nokqueue) || (defined $opt_noepoll) || (defined $opt_noports) || + (defined $opt_maxbuf) || (defined $opt_use_gnutls) ); my $interactive = !$non_interactive; @@ -102,9 +104,9 @@ my $interactive = !$non_interactive; chomp($topdir = getcwd()); $this = resolve_directory($topdir); # PWD, Regardless. -@modlist = (); # Declare for Module List.. -%config = (); # Initiate Configuration Hash.. -$config{ME} = resolve_directory($topdir); # Present Working Directory +@modlist = (); # Declare for Module List.. +%config = (); # Initiate Configuration Hash.. +$config{ME} = resolve_directory($topdir); # Present Working Directory $config{BASE_DIR} = $config{ME}; @@ -113,8 +115,8 @@ if (defined $opt_base_dir) $config{BASE_DIR} = $opt_base_dir; } -$config{CONFIG_DIR} = resolve_directory($config{BASE_DIR}."/conf"); # Configuration Directory -$config{MODULE_DIR} = resolve_directory($config{BASE_DIR}."/modules"); # Modules Directory +$config{CONFIG_DIR} = resolve_directory($config{BASE_DIR}."/conf"); # Configuration Directory +$config{MODULE_DIR} = resolve_directory($config{BASE_DIR}."/modules"); # Modules Directory $config{BINARY_DIR} = resolve_directory($config{BASE_DIR}."/bin"); # Binary Directory $config{LIBRARY_DIR} = resolve_directory($config{BASE_DIR}."/lib"); # Library Directory @@ -135,13 +137,13 @@ if (defined $opt_library_dir) $config{LIBRARY_DIR} = $opt_library_dir; } chomp($config{HAS_GNUTLS} = `libgnutls-config --version 2>/dev/null | cut -c 1,2,3`); # GNUTLS Version. -chomp($config{HAS_OPENSSL} = `pkg-config --modversion openssl 2>/dev/null`); # Openssl version +chomp($config{HAS_OPENSSL} = `pkg-config --modversion openssl 2>/dev/null`); # Openssl version chomp($gnutls_ver = $config{HAS_GNUTLS}); chomp($openssl_ver = $config{HAS_OPENSSL}); $config{USE_GNUTLS} = "n"; if (defined $opt_use_gnutls) { - $config{USE_GNUTLS} = "y"; # Use gnutls. + $config{USE_GNUTLS} = "y"; # Use gnutls. } $config{USE_OPENSSL} = "n"; # Use openssl. if (defined $opt_use_openssl) @@ -150,14 +152,14 @@ if (defined $opt_use_openssl) } # no, let's not change these. -$config{OPTIMITEMP} = "0"; # Default Optimisation Value +$config{OPTIMITEMP} = "0"; # Default Optimisation Value if (!defined $opt_disable_debug) { $config{OPTIMISATI} = "-g1"; # Optimisation Flag } else { - $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF! + $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF! } $config{NICK_LENGT} = "31"; # Default Nick Length @@ -176,7 +178,7 @@ if (defined $opt_modes) $config{MAXI_MODES} = $opt_modes; } $config{HAS_STRLCPY} = "false"; # strlcpy Check. -$config{HAS_STDINT} = "false"; # stdint.h check +$config{HAS_STDINT} = "false"; # stdint.h check $config{USE_KQUEUE} = "y"; # kqueue enabled if (defined $opt_kqueue) { @@ -186,7 +188,7 @@ if (defined $opt_nokqueue) { $config{USE_KQUEUE} = "n"; } -$config{USE_EPOLL} = "y"; # epoll enabled +$config{USE_EPOLL} = "y"; # epoll enabled if (defined $opt_epoll) { $config{USE_EPOLL} = "y"; @@ -195,7 +197,7 @@ if (defined $opt_noepoll) { $config{USE_EPOLL} = "n"; } -$config{USE_PORTS} = "y"; # epoll enabled +$config{USE_PORTS} = "y"; # epoll enabled if (defined $opt_ports) { $config{USE_PORTS} = "y"; @@ -209,7 +211,7 @@ if (defined $opt_ipv6) { $config{IPV6} = "y"; } -$config{SUPPORT_IP6LINKS} = "y"; # IPv4 supporting IPv6 links (experimental) +$config{SUPPORT_IP6LINKS} = "y"; # IPv4 supporting IPv6 links (experimental) if (defined $opt_ipv6links) { $config{SUPPORT_IP6LINKS} = "y"; @@ -218,13 +220,13 @@ if (defined $opt_noipv6links) { $config{SUPPORT_IP6LINKS} = "n"; } -$config{STATIC_LINK} = "no"; # are doing static modules? +$config{STATIC_LINK} = "no"; # are doing static modules? chomp($config{MAX_CLIENT_T} = `sh -c \"ulimit -n\"`); # FD Limit -chomp($config{MAX_DESCRIPTORS} = `sh -c \"ulimit -n\"`); # Hard FD Limit -chomp($config{GCCVER} = `g++ -dumpversion | cut -c 1`); # Major GCC Version -$config{_SOMAXCONN} = SOMAXCONN; # Max connections in accept queue +chomp($config{MAX_DESCRIPTORS} = `sh -c \"ulimit -n\"`); # Hard FD Limit +chomp($config{GCCVER} = `g++ -dumpversion | cut -c 1`); # Major GCC Version +$config{_SOMAXCONN} = SOMAXCONN; # Max connections in accept queue $config{OSNAME} = $^O; # Operating System Name -$config{IS_DARWIN} = "NO"; # Is OSX? +$config{IS_DARWIN} = "NO"; # Is OSX? if ($config{OSNAME} =~ /darwin/i) { $config{IS_DARWIN} = "YES"; @@ -235,15 +237,16 @@ if (defined $opt_cc) $config{CC} = $opt_cc; } $exec = $config{CC} . " -dumpversion | cut -c 1"; -chomp($config{GCCVER} = `$exec`); # Major GCC Version -$config{MAKEORDER} = "ircd mods"; # build order -$config{STATICLIBS} = ""; # library archive path -$config{MAX_IDENT} = "12"; # max ident size -$config{MAX_QUIT} = "255"; # max quit message size -$config{MAX_TOPIC} = "307"; # max topic size -$config{MAX_KICK} = "255"; # max kick message size -$config{MAX_GECOS} = "128"; # max GECOS size -$config{MAX_AWAY} = "200"; # max AWAY size +chomp($config{GCCVER} = `$exec`); # Major GCC Version +$config{MAKEORDER} = "ircd mods"; # build order +$config{STATICLIBS} = ""; # library archive path +$config{MAX_IDENT} = "12"; # max ident size +$config{MAX_QUIT} = "255"; # max quit message size +$config{MAX_TOPIC} = "307"; # max topic size +$config{MAX_KICK} = "255"; # max kick message size +$config{MAX_GECOS} = "128"; # max GECOS size +$config{MAX_AWAY} = "200"; # max AWAY size +$config{MAXBUF} = "512"; # Max buffer size if (defined $opt_ident) { $config{MAX_IDENT} = $opt_ident; @@ -982,8 +985,9 @@ sub writefiles { #define OPTIMISATION $config{OPTIMITEMP} #define LIBRARYDIR "$config{LIBRARY_DIR}" #define SYSTEM "$incos" -#define MAXBUF 514 EOF +print FILEHANDLE "#define MAXBUF " . ($config{MAXBUF}+2) . "\n"; + if ($config{OSNAME} =~ /SunOS/i) { print FILEHANDLE "#define IS_SOLARIS\n"; } diff --git a/make/configure.pm b/make/configure.pm index f7b1b16e0..b384ac109 100644 --- a/make/configure.pm +++ b/make/configure.pm @@ -257,6 +257,9 @@ InspIRCd 1.0.x, are also allowed. --with-away-length=[n] Specify max length of away [150] --with-max-modes=[n] Specify max modes per line which have parameters [20] + --with-maxbuf=[n] Change the per message buffer size [512] + DO NOT ALTER THIS OPTION WITHOUT GOOD REASON + AS IT *WILL* BREAK CLIENTS!!! --prefix=[directory] Base directory to install into (if defined, can automatically define config, module, bin and library dirs as subdirectories of prefix) diff --git a/src/userprocess.cpp b/src/userprocess.cpp index a72d738c3..dd6a4c24d 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -107,7 +107,7 @@ void InspIRCd::ProcessUser(userrec* cu) } else { - current->WriteServ("NOTICE %s :Your previous line was too long and was not delivered (Over 512chars) Please shorten it.", current->nick); + current->WriteServ("NOTICE %s :Your previous line was too long and was not delivered (Over %d chars) Please shorten it.", current->nick, MAXBUF-2); current->recvq = ""; } } @@ -177,8 +177,8 @@ void InspIRCd::ProcessUser(userrec* cu) std::string single_line = current->GetBuffer(); current->bytes_in += single_line.length(); current->cmds_in++; - if (single_line.length() > 512) - single_line.resize(512); + if (single_line.length() > MAXBUF - 2) /* MAXBUF is 514 to allow for neccessary line terminators */ + single_line.resize(MAXBUF - 2); /* So to trim to 512 here, we use MAXBUF - 2 */ EventHandler* old_comp = this->SE->GetRef(currfd); diff --git a/src/users.cpp b/src/users.cpp index cf3d4aa86..eacbe2779 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -690,8 +690,8 @@ void userrec::AddWriteBuf(const std::string &data) try { - if (data.length() > 512) - sendq.append(data.substr(0,510)).append("\r\n"); + if (data.length() > MAXBUF - 2) /* MAXBUF has a value of 514, to account for line terminators */ + sendq.append(data.substr(0,MAXBUF - 4)).append("\r\n"); /* MAXBUF-4 = 510 */ else sendq.append(data); } |