}
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;
}
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) {
//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;
}
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;
" (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;
}
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*/
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;
}
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");
}
}
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);
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;
}
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;
}
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);
} 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;