\ingroup ExternalPrograms
\par
Because the standard generation of SSL certificates for
- sslBump feature, Squid must use external proccess to
+ sslBump feature, Squid must use external process to
actually make these calls. This process generate new ssl
certificates and worked with ssl certificates disk cache.
Typically there will be five certificate generator processes
std::cerr << help_string << std::endl;
}
-/// Proccess new request message.
-static bool proccessNewRequest(Ssl::CrtdMessage & request_message, std::string const & db_path, size_t max_db_size, size_t fs_block_size)
+/// Process new request message.
+static bool processNewRequest(Ssl::CrtdMessage & request_message, std::string const & db_path, size_t max_db_size, size_t fs_block_size)
{
Ssl::CertificateProperties certProperties;
std::string error;
{
try {
size_t max_db_size = 0;
- size_t fs_block_size = 2048;
+ size_t fs_block_size = 0;
int8_t c;
bool create_new_db = false;
std::string db_path;
- // proccess options.
+ // process options.
while ((c = getopt(argc, argv, "dcghvs:M:b:n:")) != -1) {
switch (c) {
case 'd':
exit(0);
}
+ if (fs_block_size == 0) {
+ struct statvfs sfs;
+
+ if (xstatvfs(db_path.c_str(), &sfs)) {
+ fs_block_size = 2048;
+ } else {
+ fs_block_size = sfs.f_frsize;
+ // Sanity check; make sure we have a meaningful value.
+ if (fs_block_size < 512)
+ fs_block_size = 2048;
+ }
+ }
+
{
Ssl::CertificateDb::check(db_path, max_db_size, fs_block_size);
}
// Initialize SSL subsystem
SSL_load_error_strings();
SSLeay_add_ssl_algorithms();
- // proccess request.
+ // process request.
for (;;) {
char request[HELPER_INPUT_BUFFER];
Ssl::CrtdMessage request_message(Ssl::CrtdMessage::REQUEST);
if (parse_result == Ssl::CrtdMessage::ERROR) {
throw std::runtime_error("Cannot parse request message.");
} else if (request_message.getCode() == Ssl::CrtdMessage::code_new_certificate) {
- proccessNewRequest(request_message, db_path, max_db_size, fs_block_size);
+ processNewRequest(request_message, db_path, max_db_size, fs_block_size);
} else {
throw std::runtime_error("Unknown request code: \"" + request_message.getCode() + "\".");
}
{
char *tmp = xstrdup(Ssl::TheConfig.ssl_crtd);
char *tmp_begin = tmp;
- char * token = NULL;
- bool db_path_was_found = false;
- bool block_size_was_found = false;
- char buffer[20] = "2048";
+ char *token = NULL;
while ((token = strwordtok(NULL, &tmp))) {
wordlistAdd(&ssl_crtd->cmdline, token);
- if (!strcmp(token, "-b"))
- block_size_was_found = true;
- if (!strcmp(token, "-s")) {
- db_path_was_found = true;
- } else if (db_path_was_found) {
- db_path_was_found = false;
- int fs_block_size = 0;
- fsBlockSize(token, &fs_block_size);
- snprintf(buffer, sizeof(buffer), "%i", fs_block_size);
- }
- }
- if (!block_size_was_found) {
- wordlistAdd(&ssl_crtd->cmdline, "-b");
- wordlistAdd(&ssl_crtd->cmdline, buffer);
}
safe_free(tmp_begin);
}