summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-18 21:43:37 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-18 21:43:37 +0000
commit983f18f8348c96edd3086e750db29778bec8b042 (patch)
tree1f4de85b4fc476ff39eee9f7d9341ae930a3584e /src
parent69f280701b651fcbdc22f68db1714c384b9098f4 (diff)
Tried to implement sprintf that returns std::string of any size, realized it would scale like unreal scales to ircnet (e.g. it wouldnt!) so took it back out.
Moved chop() functionality into userrec::AddWriteBuf and make it nicer (no strlen) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4433 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/helperfuncs.cpp6
-rw-r--r--src/message.cpp74
-rw-r--r--src/users.cpp12
3 files changed, 11 insertions, 81 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 77a74c32c..f83d0f618 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -161,7 +161,6 @@ void Write_NoFormat(int sock, const char *text)
if (fd_ref_table[sock])
{
bytes = snprintf(tb,MAXBUF,"%s\r\n",text);
- chop(tb);
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
@@ -210,7 +209,6 @@ void Write(int sock, char *text, ...)
vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
bytes = snprintf(tb,MAXBUF,"%s\r\n",textbuffer);
- chop(tb);
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
@@ -247,7 +245,6 @@ void WriteServ_NoFormat(int sock, const char* text)
if (fd_ref_table[sock])
{
bytes = snprintf(tb,MAXBUF,":%s %s\r\n",Config->ServerName,text);
- chop(tb);
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
@@ -312,7 +309,6 @@ void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
if (fd_ref_table[sock])
{
bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),text);
- chop(tb);
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
@@ -360,7 +356,6 @@ void WriteFrom(int sock, userrec *user,char* text, ...)
vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),textbuffer);
- chop(tb);
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
@@ -403,7 +398,6 @@ void WriteTo(userrec *source, userrec *dest,char *data, ...)
va_start(argsPtr, data);
vsnprintf(textbuffer, MAXBUF, data, argsPtr);
va_end(argsPtr);
- chop(textbuffer);
// if no source given send it from the server.
if (!source)
diff --git a/src/message.cpp b/src/message.cpp
index e49663e55..e4dc380cd 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -76,80 +76,6 @@ int common_channels(userrec *u, userrec *u2)
return 0;
}
-void tidystring(char* str)
-{
- // strips out double spaces before a : parameter
-
- char temp[MAXBUF];
- bool go_again = true;
-
- if (!str)
- return;
-
- // pointer voodoo++ --w00t
- while ((*str) && (*str == ' '))
- str++;
-
- while (go_again)
- {
- bool noparse = false;
- int t = 0, a = 0;
- go_again = false;
- const int lenofstr = strlen(str);
-
- /*
- * by caching strlen() of str, we theoretically avoid 3 expensive calls each time this loop
- * rolls around.. should speed things up a nanosecond or two. ;)
- */
-
- while (a < lenofstr)
- {
- if ((a < lenofstr - 1) && (noparse == false))
- {
- if ((str[a] == ' ') && (str[a+1] == ' '))
- {
- log(DEBUG,"Tidied extra space out of string: %s",str);
- go_again = true;
- a++;
- }
- }
-
- if (a < lenofstr - 1)
- {
- if ((str[a] == ' ') && (str[a+1] == ':'))
- {
- noparse = true;
- }
- }
-
- temp[t++] = str[a++];
- }
-
- temp[t] = '\0';
- strlcpy(str,temp,MAXBUF);
- }
-}
-
-/* chop a string down to 512 characters and preserve linefeed (irc max
- * line length) */
-
-void chop(char* str)
-{
- if (!str)
- {
- log(DEBUG,"ERROR! Null string passed to chop()!");
- return;
- }
- if (strlen(str) >= 511)
- {
- str[510] = '\r';
- str[511] = '\n';
- str[512] = '\0';
- log(DEBUG,"Excess line chopped.");
- }
-}
-
-
void Blocking(int s)
{
int flags = fcntl(s, F_GETFL, 0);
diff --git a/src/users.cpp b/src/users.cpp
index fbd4820b4..bf99c1fc8 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -472,7 +472,17 @@ void userrec::AddWriteBuf(const std::string &data)
return;
}
- sendq.append(data);
+ if (data.length() > 512)
+ {
+ std::string newdata(data);
+ newdata.resize(510);
+ newdata.append("\r\n");
+ sendq.append(newdata);
+ }
+ else
+ {
+ sendq.append(data);
+ }
}
// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)