* Here's where we (hopefully) have most parts of the Citadel server that
* might need tweaking when run on different operating system variants.
*
- * Copyright (c) 1987-2019 by the citadel.org team
+ * Copyright (c) 1987-2021 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 3.
Ctx = CC;
-#ifdef BIGBAD_IODBG
- {
- int rv = 0;
- char fn [SIZ];
- FILE *fd;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", Ctx->ServiceName, Ctx->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Sending: BufSize: %d BufContent: [", nbytes);
- rv = fwrite(buf, nbytes, 1, fd);
- fprintf(fd, "]\n");
- fclose(fd);
- }
-#endif
-// flush_client_inbuf();
if (Ctx->redirect_buffer != NULL) {
StrBufAppendBufPlain(Ctx->redirect_buffer,
buf, nbytes, 0);
#ifdef HAVE_OPENSSL
if (CCC->redirect_ssl) {
-#ifdef BIGBAD_IODBG
- int rv = 0;
- char fn [SIZ];
- FILE *fd;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Reading BLOB: BufSize: %d ", bytes);
- rv = fwrite(ChrPtr(Target), StrLength(Target), 1, fd);
- fprintf(fd, "]\n");
-
-
- fclose(fd);
-#endif
retval = client_read_sslblob(Target, bytes, timeout);
if (retval < 0) {
syslog(LOG_ERR, "sysdep: client_read_blob() failed");
}
-#ifdef BIGBAD_IODBG
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Read: %d BufContent: [", StrLength(Target));
- rv = fwrite(ChrPtr(Target), StrLength(Target), 1, fd);
- fprintf(fd, "]\n");
- fclose(fd);
-#endif
}
else
#endif
{
-#ifdef BIGBAD_IODBG
- int rv = 0;
- char fn [SIZ];
- FILE *fd;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Reading BLOB: BufSize: %d ",
- bytes);
- rv = fwrite(ChrPtr(Target), StrLength(Target), 1, fd);
- fprintf(fd, "]\n");
- fclose(fd);
-#endif
retval = StrBufReadBLOBBuffered(Target,
CCC->RecvBuf.Buf,
&CCC->RecvBuf.ReadWritePointer,
client_close();
return retval;
}
-#ifdef BIGBAD_IODBG
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Read: %d BufContent: [",
- StrLength(Target));
- rv = fwrite(ChrPtr(Target), StrLength(Target), 1, fd);
- fprintf(fd, "]\n");
- fclose(fd);
-#endif
}
return retval;
}
StrBufAppendBufPlain(Target, pch, len, 0);
FlushStrBuf(CCC->RecvBuf.Buf);
CCC->RecvBuf.ReadWritePointer = NULL;
-#ifdef BIGBAD_IODBG
- {
- int rv = 0;
- char fn [SIZ];
- FILE *fd;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- fprintf(fd, "Read: BufSize: %d BufContent: [",
- StrLength(Target));
- rv = fwrite(ChrPtr(Target), StrLength(Target), 1, fd);
- fprintf(fd, "]\n");
- fclose(fd);
- }
-#endif
return StrLength(Target);
}
return rc;
FlushStrBuf(Target);
#ifdef HAVE_OPENSSL
if (CCC->redirect_ssl) {
-#ifdef BIGBAD_IODBG
- char fn [SIZ];
- FILE *fd;
- int len = 0;
- int rlen = 0;
- int nlen = 0;
- int nrlen = 0;
- const char *pch;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- pch = ChrPtr(CCC->RecvBuf.Buf);
- len = StrLength(CCC->RecvBuf.Buf);
- if (CCC->RecvBuf.ReadWritePointer != NULL)
- rlen = CCC->RecvBuf.ReadWritePointer - pch;
- else
- rlen = 0;
-
-/* fprintf(fd, "\n\n\nBufSize: %d BufPos: %d \nBufContent: [%s]\n\n_____________________\n",
- len, rlen, pch);
-*/
- fprintf(fd, "\n\n\nSSL1: BufSize: %d BufPos: %d \n_____________________\n",
- len, rlen);
-#endif
- rc = client_readline_sslbuffer(Target,
- CCC->RecvBuf.Buf,
- &CCC->RecvBuf.ReadWritePointer,
- 1);
-#ifdef BIGBAD_IODBG
- pch = ChrPtr(CCC->RecvBuf.Buf);
- nlen = StrLength(CCC->RecvBuf.Buf);
- if (CCC->RecvBuf.ReadWritePointer != NULL)
- nrlen = CCC->RecvBuf.ReadWritePointer - pch;
- else
- nrlen = 0;
-/*
- fprintf(fd, "\n\n\nBufSize: was: %d is: %d BufPos: was: %d is: %d \nBufContent: [%s]\n\n_____________________\n",
- len, nlen, rlen, nrlen, pch);
-*/
- fprintf(fd, "\n\n\nSSL2: BufSize: was: %d is: %d BufPos: was: %d is: %d \n",
- len, nlen, rlen, nrlen);
-
- fprintf(fd, "SSL3: Read: BufSize: %d BufContent: [%s]\n\n*************\n",
- StrLength(Target), ChrPtr(Target));
- fclose(fd);
-
- if (rc < 0) {
- syslog(LOG_ERR, "sysdep: CtdlClientGetLine() failed");
- }
-#endif
+ rc = client_readline_sslbuffer(Target, CCC->RecvBuf.Buf, &CCC->RecvBuf.ReadWritePointer, 1);
return rc;
}
else
#endif
{
-#ifdef BIGBAD_IODBG
- char fn [SIZ];
- FILE *fd;
- int len, rlen, nlen, nrlen;
- const char *pch;
-
- snprintf(fn, SIZ, "/tmp/foolog_%s.%d", CCC->ServiceName, CCC->cs_pid);
-
- fd = fopen(fn, "a+");
- if (fd == NULL) {
- syslog(LOG_ERR, "%s: %m", fn);
- exit(1);
- }
- pch = ChrPtr(CCC->RecvBuf.Buf);
- len = StrLength(CCC->RecvBuf.Buf);
- if (CCC->RecvBuf.ReadWritePointer != NULL)
- rlen = CCC->RecvBuf.ReadWritePointer - pch;
- else
- rlen = 0;
-
-/* fprintf(fd, "\n\n\nBufSize: %d BufPos: %d \nBufContent: [%s]\n\n_____________________\n",
- len, rlen, pch);
-*/
- fprintf(fd, "\n\n\nBufSize: %d BufPos: %d \n_____________________\n",
- len, rlen);
-#endif
rc = StrBufTCP_read_buffered_line_fast(Target,
CCC->RecvBuf.Buf,
&CCC->RecvBuf.ReadWritePointer,
1,
&Error
);
-
-#ifdef BIGBAD_IODBG
- pch = ChrPtr(CCC->RecvBuf.Buf);
- nlen = StrLength(CCC->RecvBuf.Buf);
- if (CCC->RecvBuf.ReadWritePointer != NULL)
- nrlen = CCC->RecvBuf.ReadWritePointer - pch;
- else
- nrlen = 0;
-/*
- fprintf(fd, "\n\n\nBufSize: was: %d is: %d BufPos: was: %d is: %d \nBufContent: [%s]\n\n_____________________\n",
- len, nlen, rlen, nrlen, pch);
-*/
- fprintf(fd, "\n\n\nBufSize: was: %d is: %d BufPos: was: %d is: %d \n",
- len, nlen, rlen, nrlen);
-
- fprintf(fd, "Read: BufSize: %d BufContent: [%s]\n\n*************\n",
- StrLength(Target), ChrPtr(Target));
- fclose(fd);
-
- if ((rc < 0) && (Error != NULL)) {
- syslog(LOG_ERR, "sysdep: CtdlClientGetLine() failed: %s", Error);
- }
-#endif
return rc;
}
}
/*
* Cleanup any contexts that are left lying around
*/
-
-
void close_masters (void)
{
struct ServiceFunctionHook *serviceptr;
* The system-dependent part of master_cleanup() - close the master socket.
*/
void sysdep_master_cleanup(void) {
-
close_masters();
-
context_cleanup();
-
#ifdef HAVE_OPENSSL
destruct_ssl();
#endif
- CtdlDestroyProtoHooks();
- CtdlDestroyDeleteHooks();
- CtdlDestroyXmsgHooks();
- CtdlDestroyUserHooks();
- CtdlDestroyMessageHook();
- CtdlDestroyCleanupHooks();
- CtdlDestroyFixedOutputHooks();
- CtdlDestroySessionHooks();
- CtdlDestroyServiceHook();
- CtdlDestroyRoomHooks();
- CtdlDestroySearchHooks();
}
pid_t child = 0;
FILE *fp;
int do_restart = 0;
-
current_child = 0;
+ //if (chdir(ctdl_run_dir) != 0) {
+ //syslog(LOG_ERR, "%s: %m", ctdl_run_dir);
+ //}
+
/* Close stdin/stdout/stderr and replace them with /dev/null.
* We don't just call close() because we don't want these fd's
* to be reused for other files.
*/
- if (chdir(ctdl_run_dir) != 0) {
- syslog(LOG_ERR, "%s: %m", ctdl_run_dir);
- }
-
child = fork();
if (child != 0) {
exit(0);