{
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;
- storeDirGetBlkSize(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);
}
\defgroup ssl_crtd ssl_crtd
\ingroup ExternalPrograms
\par
- Because the standart generation of ssl certificate for
- sslBump feature, Squid must use external proccess to
+ Because the standard generation of ssl certificate for
+ 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 ssl_crtd processes spawned
std::cerr << help_string << std::endl;
}
-/**
- \ingroup ssl_crtd
- * 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() + "\".");
}