summaryrefslogtreecommitdiffstats
path: root/mbbsd/mbbsd.c
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-01-26 00:31:50 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-01-26 00:31:50 +0800
commit55a067965fdf64ac2726ae1fbc2c1d94c8557dd3 (patch)
tree53e20c69987b1d7abd517a4fa00add72c6c73afa /mbbsd/mbbsd.c
parentf265780b3421cc2ffeb7c1a813c120c7d19b17dc (diff)
downloadpttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar.gz
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar.bz2
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar.lz
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar.xz
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.tar.zst
pttbbs-55a067965fdf64ac2726ae1fbc2c1d94c8557dd3.zip
- mbbsd: provide the possibility to optimize some API. keep port information.
- make DEBUGSLEEP waiting configurable. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3867 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/mbbsd.c')
-rw-r--r--mbbsd/mbbsd.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index 7e6b52ab..cd7211e5 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -24,14 +24,34 @@ void big2uni_init(void*);
void uni2big_init(void*);
#endif
+//////////////////////////////////////////////////////////////////
+// Site Optimization
+// override these macro if you need more optimization,
+// based on OS/lib/package...
+#ifndef OPTIMIZE_LISTEN_SOCKET
+#define OPTIMIZE_LISTEN_SOCKET(sock,sz)
+#endif
+
+#ifndef XAUTH_HOST
+#define XAUTH_HOST(x) x
+#endif
+
+#ifndef XAUTH_GETREMOTENAME
+#define XAUTH_GETREMOTENAME(x) x
+#endif
+
+#ifndef XAUTH_TRYREMOTENAME
+#define XAUTH_TRYREMOTENAME()
+#endif
+
#if 0
static jmp_buf byebye;
#endif
static char remoteusername[40] = "?";
-
static unsigned char enter_uflag;
static int use_shell_login_mode = 0;
+static int listen_port = 23;
#ifdef DETECT_CLIENT
Fnv32_t client_code=FNV1_32_INIT;
@@ -300,7 +320,7 @@ abort_bbs_debug(int sig)
if(currutmp && strncmp(cuser.userid, currutmp->userid, IDLEN) == EQUSTR)
currutmp->mode = DEBUGSLEEPING;
- sleep(3600); /* wait 60 mins for debug */
+ sleep(DEBUGSLEEP_SECONDS);
#endif
exit(0);
@@ -1362,7 +1382,7 @@ getremotename(const struct sockaddr_in * from, char *rhost, char *rname)
/* get remote host name */
#ifdef FAST_LOGIN
- strcpy(rhost, (char *)inet_ntoa(from->sin_addr));
+ XAUTH_HOST(strcpy(rhost, (char *)inet_ntoa(from->sin_addr)));
#else
struct sockaddr_in our_sin;
struct sockaddr_in rmt_sin;
@@ -1483,6 +1503,8 @@ bind_port(int port)
sz = 4096;
setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (void*)&sz, sizeof(sz));
+ OPTIMIZE_LISTEN_SOCKET(sock, sz);
+
xsin.sin_family = AF_INET;
xsin.sin_addr.s_addr = htonl(INADDR_ANY);
xsin.sin_port = htons(port);
@@ -1589,7 +1611,6 @@ daemon_login(int argc, char *argv[], char *envp[])
{
int msock, csock; /* socket for Master and Child */
FILE *fp;
- int listen_port = 23;
int len_of_sock_addr, overloading = 0, i;
char buf[256];
#if OVERLOADBLOCKFDS
@@ -1685,6 +1706,8 @@ daemon_login(int argc, char *argv[], char *envp[])
continue;
}
+ XAUTH_TRYREMOTENAME();
+
overloading = check_ban_and_load(csock);
#if OVERLOADBLOCKFDS
if( (!overloading && nblocked) ||
@@ -1724,7 +1747,8 @@ daemon_login(int argc, char *argv[], char *envp[])
dup2(csock, 0);
close(csock);
- getremotename(&xsin, fromhost, remoteusername);
+ XAUTH_GETREMOTENAME(getremotename(&xsin, fromhost, remoteusername));
+
if( check_banip(fromhost) ){
sleep(10);
exit(0);