summaryrefslogtreecommitdiffstats
path: root/lib/libtdekrb/src/tdekrbserversocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libtdekrb/src/tdekrbserversocket.cpp')
-rw-r--r--lib/libtdekrb/src/tdekrbserversocket.cpp66
1 files changed, 62 insertions, 4 deletions
diff --git a/lib/libtdekrb/src/tdekrbserversocket.cpp b/lib/libtdekrb/src/tdekrbserversocket.cpp
index cd7fa88..1f6d755 100644
--- a/lib/libtdekrb/src/tdekrbserversocket.cpp
+++ b/lib/libtdekrb/src/tdekrbserversocket.cpp
@@ -22,6 +22,7 @@
#include <unistd.h>
#include <tqapplication.h>
+#include <tqbuffer.h>
#include <sasl.h>
#include <saslplug.h>
@@ -78,12 +79,16 @@ static int logSASLMessages(void *context __attribute__((unused)), int priority,
return SASL_OK;
}
-TDEKerberosServerSocket::TDEKerberosServerSocket(TQObject *parent, const char *name) : TQSocket(parent, name), m_kerberosRequested(false), m_negotiatedMaxBufferSize(NET_SEC_BUF_SIZE), m_criticalSection(0) {
+TDEKerberosServerSocket::TDEKerberosServerSocket(TQObject *parent, const char *name) : TQSocket(parent, name), m_kerberosRequested(false), m_criticalSection(0), m_negotiatedMaxBufferSize(NET_SEC_BUF_SIZE) {
saslData = new SASLDataPrivate;
saslData->m_krbConnection = NULL;
+ m_buffer = new TQBuffer();
+ m_buffer->open(IO_ReadWrite);
}
TDEKerberosServerSocket::~TDEKerberosServerSocket() {
+ m_buffer->close();
+ delete m_buffer;
delete saslData;
}
@@ -102,6 +107,58 @@ void TDEKerberosServerSocket::close() {
}
}
+void TDEKerberosServerSocket::flush() {
+ if (m_kerberosRequested) {
+ // RAJA FIXME
+ }
+ else {
+ TQSocket::flush();
+ }
+}
+
+TQIODevice::Offset TDEKerberosServerSocket::size() const {
+ TQIODevice::Offset ret;
+
+ if (m_kerberosRequested) {
+ // RAJA FIXME
+ }
+ else {
+ ret = TQSocket::size();
+ }
+
+ return ret;
+}
+
+TQIODevice::Offset TDEKerberosServerSocket::at() const {
+ return TQSocket::at();
+}
+
+bool TDEKerberosServerSocket::at(TQIODevice::Offset off) {
+ bool ret;
+
+ if (m_kerberosRequested) {
+ // RAJA FIXME
+ }
+ else {
+ ret = TQSocket::at(off);
+ }
+
+ return ret;
+}
+
+bool TDEKerberosServerSocket::atEnd() const {
+ bool ret;
+
+ if (m_kerberosRequested) {
+ // RAJA FIXME
+ }
+ else {
+ ret = TQSocket::atEnd();
+ }
+
+ return ret;
+}
+
int TDEKerberosServerSocket::setUsingKerberos(bool krbactive) {
int ret = 0;
@@ -227,7 +284,9 @@ void TDEKerberosServerSocket::sendSASLDataToNetwork(const char *buffer, unsigned
len = strlen(buf);
buf[len] = '\n';
buf[len+1] = 0;
- write(netfd, buf, len+1);
+ if (write(netfd, buf, len+1) < 0) {
+ // ERROR
+ }
free(buf);
}
@@ -297,7 +356,7 @@ int TDEKerberosServerSocket::transmitEncryptedData(int fd, const char* readbuf,
return 0;
}
-int TDEKerberosServerSocket::receiveEncryptedData(char *buf, int trunclen) {
+int TDEKerberosServerSocket::receiveEncryptedData(char *buf, unsigned int trunclen) {
unsigned int recv_len;
const char *recv_data;
int result;
@@ -341,7 +400,6 @@ int TDEKerberosServerSocket::initializeKerberosInterface() {
int slen;
int count;
const char *data;
- char user_authorized = 0;
sasl_ssf_t *ssf;
// FIXME