diff options
-rwxr-xr-x | debug/tcpdump | 3 | ||||
-rw-r--r-- | libirc/libirc.c | 8 | ||||
-rwxr-xr-x | libirc/libirc.so | bin | 7585 -> 7561 bytes | |||
-rw-r--r-- | segfault.c | 5 |
4 files changed, 14 insertions, 2 deletions
diff --git a/debug/tcpdump b/debug/tcpdump new file mode 100755 index 0000000..6a8aa9f --- /dev/null +++ b/debug/tcpdump @@ -0,0 +1,3 @@ +#!/bin/bash +PORT=$(sockstat -n | grep segfault | tr -s ' ' | cut -d. -f5 | cut '-d ' -f1) +tcpdump -q -s0 -nXXi lo0 port $PORT diff --git a/libirc/libirc.c b/libirc/libirc.c index c529d10..ee4506d 100644 --- a/libirc/libirc.c +++ b/libirc/libirc.c @@ -100,8 +100,12 @@ int runit(int fd,void (*line_handler)(),void (*extra_handler)()) { line[i-s+1]=0;//gotta null terminate this. line_handler expects it. s=i+1;//the character after the newline. if(!strncmp(line,"PING",4)) { - fprintf(fp,"PONG %s\r\n",line+6);//a whole FILE * and fdopen JUST for this??? oy... - fflush(fp); + t=malloc(strlen(line)); + strcpy(t,"PONG "); + strcat(t,line+6); + write(fd,t,strlen(t)); + //fprintf(fp,"PONG %s",line+6);//a whole FILE * and fdopen JUST for this??? oy... + //fflush(fp); #ifdef DEBUG printf("%s\nPONG %s\n",line,line+6); write(fd,"PRIVMSG %s :PONG! w00t!\r\n",DEBUG,28); diff --git a/libirc/libirc.so b/libirc/libirc.so Binary files differindex c333bd8..222613c 100755 --- a/libirc/libirc.so +++ b/libirc/libirc.so @@ -705,10 +705,12 @@ void c_leetappend(int fd,char *from,char *msg) { void c_tails(int fd,char *from) { int i; int l; + int at_least_one=0; char *tmp,*x; //privmsg(fd,from,"filename@filepos --msg|raw-> IRCdestination"); for(i=0;i<MAXTAILS;i++) { if(tailf[i].fp) { + at_least_one=1; l=(strlen(tailf[i].file) + strlen(tailf[i].to) + 50);//??? hack. fix it. tmp=malloc(l); if(!tmp) { @@ -722,6 +724,9 @@ void c_tails(int fd,char *from) { free(tmp); } } + if(!at_least_one) { + privmsg(fd,from,"I don't have any tails. :("); + } } char recording,recording_raw; |