fixing litle issues.

master
Steffen Pohle 4 weeks ago
parent 0c3b402c17
commit c59be1fc3c

1
.gitignore vendored

@ -9,6 +9,7 @@ test-tcpserver
test-udp
.depend
.Makefile.rules
Makefile.rules
# ---> Eclipse
.metadata

@ -23,6 +23,7 @@ help:
echo "set up configuration"
echo " make configwindows to generate the windows build"
echo " make configlinux to generate the linix build"
echo " make keygen create self signed certificate"
configlinux: clean
cp -f Makefile.rules.linux Makefile.rules

@ -101,6 +101,9 @@ int SSLSocket::SetCertificat(string certf, string keyf) {
certfile = certf;
keyfile = keyf;
if (access (certf.c_str(), R_OK) != 0) return 0;
if (access (keyf.c_str(), R_OK) != 0) return 0;
return 1;
};

@ -21,20 +21,23 @@ void server () {
//
// start the server
printf ("server: starting server\n");
if (tcpserver.Listen(DEFAULT_PORT) != 1) {
printf ("cloud not start the tcp server\n");
printf ("server: cloud not start the tcp server\n");
exit (1);
}
//
// init SSL
if (ssl.SetCertificat("cert.pem", "privkey.pem") != 1) {
printf ("SetCertificat error:%s\n", strerror(errno));
printf ("server: setting up certificates\n");
if (ssl.SetCertificat("cert.pem", "privkey.pem") != 0) {
printf ("server: SetCertificat error:%s\n", strerror(errno));
exit (1);
}
//
// check for connections
printf ("server: wait for connection\n");
for (;time_now - time_start < 10; time_now = time(NULL)) {
connection = tcpserver.Accept();
if (connection != NULL) {
@ -42,17 +45,10 @@ void server () {
// someone connected - create new process
// take care of parallel processing (parent is always the server)
//
printf (" server: got a connection forking new process\n");
pid = fork();
if (pid == 0) {
//
// child process - always close server since it will handeled
// by the parent process. Make sure the client exits and never
// returns.
tcpserver.Close();
printf ("server: someone connected.\n");
printf ("server: accept ssl connection\n");
if (ssl.Accept(connection->GetSocket(), 0) != 1) {
printf ("could not establish SSL connection:%s\n", strerror(errno));
printf ("server: could not establish SSL connection:%s\n", strerror(errno));
exit (1);
}
i = ssl.Read(buffer, NET_BUFFERSIZE);
@ -63,24 +59,18 @@ void server () {
for (c = 0; c < i; c++) buffer[c] = toupper(buffer[c]);
ssl.Write(buffer, i);
}
else {
printf ("server: nothing to read. close connection.\n");
}
//
// just delete the class object, it will close the client connection
ssl.Close();
delete (connection);
//
// exit child process
exit (1);
connection = NULL;
}
else {
//
// parent process - just close the client connection
// it will be handeled by the child process.
delete (connection);
}
}
usleep (25000);
usleep (250000);
}
printf ("server: terminating server process.\n");
};
@ -94,16 +84,19 @@ void client () {
//
// connect to the server
printf ("client: connect to localhost\n");
if (tcpclient.Connect ("localhost", DEFAULT_PORT) != 1) {
printf ("cloud not connect to server\n");
printf ("client: cloud not connect to server\n");
exit (1);
}
printf ("client: connected\n");
res = ssl.Connect(tcpclient.GetSocket(), 100);
if (res == -1) {
printf ("could not establish SSL connection:errno:%s sslerror:%s\n", strerror(errno), ssl.GetSSLErrorText(ssl.sslerror).c_str());
printf ("client: start SSL connection\n");
if (ssl.Connect(tcpclient.GetSocket(), 100) != 1) {
printf ("client: could not establish SSL connection:errno:%s sslerror:%s\n", strerror(errno), ssl.GetSSLErrorText(ssl.sslerror).c_str());
exit (1);
}
printf ("client: ssl connected.\n");
//
// send some data
@ -111,17 +104,25 @@ void client () {
printf ("client: send '%s' to the server.\n", buffer);
if (ssl.Write(buffer, strlen (buffer)) != strlen (buffer)) {
printf ("could not send all data. errno:%s sslerror:%s\n", strerror(errno), ssl.GetSSLErrorText(ssl.sslerror).c_str());
printf ("client: could not send all data. errno:%s sslerror:%s\n", strerror(errno), ssl.GetSSLErrorText(ssl.sslerror).c_str());
exit (1);
}
//
// read some data (wait maximum 10x1000ms)
for (i = 10; i > 0; i--)
if (ssl.Read(buffer, NET_BUFFERSIZE) > 0) {
for (i = 10; i > 0; i--) {
printf ("client: try to read\n");
if ((res = ssl.Read(buffer, NET_BUFFERSIZE)) > 0) {
printf ("client: got '%s' from server.\n", buffer);
break;
}
else if (res < 0) {
printf ("client: error on read: Error: %s\n", strerror(errno));
}
else {
printf ("client: no data\n");
}
}
//
// close connection

Loading…
Cancel
Save