#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
case KEYD_CMD_VERSION:
cmd = KEYD_REPLY_OK;
write(fd, &cmd, sizeof(cmd));
+ cmd = sizeof(keyd_version);
+ write(fd, &cmd, sizeof(cmd));
write(fd, &keyd_version, sizeof(keyd_version));
break;
case KEYD_CMD_GET:
}
if (ret == 0) {
keyid = config.dbbackend->getfullkeyid(keyid);
+ cmd = sizeof(keyid);
+ write(fd, &cmd, sizeof(cmd));
write(fd, &keyid, sizeof(keyid));
}
break;
write(fd, &bytes, sizeof(bytes));
break;
case KEYD_CMD_CLOSE:
+ cmd = KEYD_REPLY_OK;
+ write(fd, &cmd, sizeof(cmd));
ret = 1;
break;
case KEYD_CMD_QUIT:
+ cmd = KEYD_REPLY_OK;
+ write(fd, &cmd, sizeof(cmd));
+ ret = 1;
trytocleanup();
break;
default:
}
catchsignals();
-
+ signal(SIGPIPE, SIG_IGN);
+
snprintf(sockname, 1023, "%s/%s", config.db_dir, KEYD_SOCKET);
fd = sock_init(sockname);