return values check improvement; minor error messages changes
authorMarcel Poul <marcel.poul@cern.ch>
Sun, 4 Dec 2011 00:54:13 +0000 (00:54 +0000)
committerMarcel Poul <marcel.poul@cern.ch>
Sun, 4 Dec 2011 00:54:13 +0000 (00:54 +0000)
emi.canl.canl-c/src/canl.c
emi.canl.canl-c/src/canl_cert.c
emi.canl.canl-c/src/canl_sample_server.c
emi.canl.canl-c/src/canl_ssl.c

index 861662e..4a9986c 100644 (file)
@@ -418,27 +418,25 @@ size_t canl_io_read(canl_ctx cc, canl_io_handler io, void *buffer, size_t size,
     }
 
     if (!io) {
-        //set_error(ctx->err_msg);
         err = EINVAL;
-        goto end;
+        set_error(glb_cc, err, posix_error, "io handler not set"
+               " (canl_io_read)");
+        return -1;
     }
     
     if (!buffer || !size) {
         err = EINVAL;
-        update_error(glb_cc, "no memory to write into (canl_io_read)");
+        set_error(glb_cc, err, posix_error, "no memory to write into"
+               " (canl_io_read)");
         return -1;
     }
 
     //read something using openssl
     b_recvd = ssl_read(glb_cc, io_cc, buffer, size, timeout);
-    if (b_recvd == -1) {
-        err = errno; //TODO check again
-        goto end;
+    if (b_recvd <= 0) {
+    update_error(glb_cc, "can't read from connection"
+            " (canl_io_read)");
     }
-end:
-    if (err)
-        update_error(glb_cc, "can't read from connection"
-                " (canl_io_read)");
     return b_recvd;
 }
 
@@ -456,7 +454,9 @@ size_t canl_io_write(canl_ctx cc, canl_io_handler io, void *buffer, size_t size,
 
     if (!io) {
         err = EINVAL;
-        goto end;
+        set_error(glb_cc, err, posix_error, "io handler not set"
+               " (canl_io_write)");
+        return -1;
     }
 
     if (!buffer || !size) {
@@ -467,16 +467,9 @@ size_t canl_io_write(canl_ctx cc, canl_io_handler io, void *buffer, size_t size,
 
     //write something using openssl
     b_written = ssl_write(glb_cc, io_cc, buffer, size, timeout);
-    if (b_written == -1) {
-        err = errno; //TODO check again
-        goto end;
-    }
-
-end:
-    if (err) {
+    if (b_written <= 0) {
         update_error(glb_cc, "can't write to connection"
                 " (canl_io_write)");
-        return -1;
     }
     return b_written;
 }
index cc9243e..1bed7c2 100644 (file)
@@ -86,14 +86,6 @@ static int set_key_file(glb_ctx *cc, char *key)
         EVP_PKEY_free(cc->cert_key->key);
         cc->cert_key->key = NULL;
     }
-/*    cc->cert_key->key = EVP_PKEY_new(void);
-    if (!cc->cert_key->key) {
-        err = ERR_get_error();
-        set_error(cc, err, ssl_error, "not enough memory for"
-                " key storage (set_key_file)");
-        return err;
-    }
-*/
     key_file = fopen(key, "rb");
     if (!key_file) {
        err = errno;
@@ -109,9 +101,20 @@ static int set_key_file(glb_ctx *cc, char *key)
                 " (set_key_file)");
         goto end;
     }
+    if (fclose(key_file)){
+        err = errno;
+        set_error(cc, err, posix_error, "cannot close file with key"
+                " (set_key_file)");
+        return errno;
+    }
+    return 0;
 
 end:
-    err = fclose(key_file);
+    if (fclose(key_file)){
+        err = errno;
+        update_error(cc, "cannot close file with key"
+                " (set_key_file)");
+    }
     return err;
 }
 
@@ -134,19 +137,11 @@ static int set_cert_file(glb_ctx *cc, char *cert)
         X509_free(cc->cert_key->cert);
         cc->cert_key->cert = NULL;
     }
-/*    cc->cert_key->cert = EVP_PKEY_new(void);
-    if (!cc->cert_key->cert) {
-        err = ERR_get_error();
-        set_error(cc, err, ssl_error, "not enough memory for"
-                " key storage (set_key_file)");
-        return err;
-    }
-*/
     cert_file = fopen(cert, "rb");
     if (!cert_file) {
        err = errno;
         set_error(cc, err, posix_error, "cannot open file with cert"
-                " (set_key_file)");
+                " (set_cert_file)");
         return err;
     }
     /*TODO NULL NULL, callback and user data*/
@@ -154,11 +149,23 @@ static int set_cert_file(glb_ctx *cc, char *cert)
     if (!cc->cert_key->cert) {
         err = ERR_get_error();
         set_error(cc, err, ssl_error, "error while writing certificate"
-                " to context (set_key_file)");
+                " to context (set_cert_file)");
         goto end;
     }
 
+    if (fclose(cert_file)){
+        err = errno;
+        set_error(cc, err, posix_error, "cannot close file with certificate"
+                " (set_cert_file)");
+        return errno;
+    }
+    return 0;
+
 end:
-    err = fclose(cert_file);
+    if (fclose(cert_file)){
+        err = errno;
+        update_error(cc, "cannot close file with certificate"
+                " (set_cert_file)");
+    }
     return err;
 }
index ca96a3f..1a17d15 100644 (file)
@@ -63,7 +63,7 @@ int main(int argc, char *argv[])
         err = canl_set_ctx_own_cert_file(my_ctx, serv_cert, serv_key, 
                 NULL, NULL);
         if (err) {
-            printf("[SERVER] cannot set certificate or file to context\n");
+            printf("[SERVER] cannot set certificate or key to context\n");
         }
     }
 
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
         printf("[SERVER] message \"%s\" sent successfully\n", buf);
     }
 
-    err = canl_io_read (my_ctx, my_io_h, buf, sizeof(buf)-1, NULL);
+    err = canl_io_read (my_ctx, my_new_io_h, buf, sizeof(buf)-1, NULL);
     if (err > 0) {
         buf[err] = '\0';
         printf ("[SERVER] received: %s\n", buf);
index 3ccca23..34b3def 100644 (file)
@@ -443,23 +443,9 @@ int ssl_write(glb_ctx *cc, io_handler *io, void *buffer, size_t size, struct tim
     int touted = 0;
     int to = 0; // bool
 
-    if (!io->s_ctx->ssl_io) {
+    if (!io->s_ctx || !io->s_ctx->ssl_io) {
         err = EINVAL;
-        goto end;
-    }
-
-    if (!cc) {
-        return -1;
-    }
-    if (!io) {
-        err = EINVAL;
-        goto end;
-    }
-
-    if (!buffer) {
-        err = EINVAL; //TODO really?
-        set_error(cc, err, posix_error, "Nothing to write (ssl_write)");
-        errno = err;
+        set_error(cc, err, posix_error, "wrong ssl handler (ssl_read)");
         return -1;
     }
     
@@ -543,23 +529,9 @@ int ssl_read(glb_ctx *cc, io_handler *io, void *buffer, size_t size, struct time
     int expected = 0, error = 0;
     int timeout;
 
-    if (!io->s_ctx->ssl_io) {
+    if (!io->s_ctx || !io->s_ctx->ssl_io) {
         err = EINVAL;
-        goto end;
-    }
-
-    if (!cc) {
-        return -1;
-    }
-    if (!io) {
-        err = EINVAL;
-        goto end;
-    }
-
-    if (!buffer) {
-        err = EINVAL; //TODO really?
-        set_error(cc, err, posix_error, "Not enough memory to read to (ssl_read)");
-        errno = err;
+        set_error(cc, err, posix_error, "wrong ssl handler (ssl_read)");
         return -1;
     }
 
@@ -577,7 +549,8 @@ int ssl_read(glb_ctx *cc, io_handler *io, void *buffer, size_t size, struct time
         curtime = time(NULL);
 
         if (ret > 0) {
-            ret2 = SSL_read(io->s_ctx->ssl_io, str + nwritten, strlen(str) - nwritten);
+            ret2 = SSL_read(io->s_ctx->ssl_io, str + nwritten,
+                    strlen(str) - nwritten);
 
             if (ret2 <= 0) {
                 expected = error = SSL_get_error(io->s_ctx->ssl_io, ret2);
@@ -586,13 +559,15 @@ int ssl_read(glb_ctx *cc, io_handler *io, void *buffer, size_t size, struct time
     } while (TEST_SELECT(ret, ret2, timeout, curtime, starttime, error));
 
 end:
-    if (ret <= 0 || ret2 <= 0) { //TODO ret2 < 0 originally
+    if (ret <= 0 || ret2 <= 0) { // what if ret2 == 0? conn closed?
         err = -1; //TODO what to assign
         if (timeout != -1 && (curtime - starttime >= timeout)){
-            set_error(cc, ETIMEDOUT, posix_error, "Connection stuck during read: timeout reached. (ssl_read)");
+            set_error(cc, ETIMEDOUT, posix_error, "Connection stuck"
+                   " during read: timeout reached. (ssl_read)");
         }
         else
-            set_error(cc, err, unknown_error, "Error during SSL read: (ssl_read)");
+            set_error(cc, err, unknown_error, "Error during SSL"
+                    " read: (ssl_read)");
     }
     else
         err = ret2;