aboutsummaryrefslogtreecommitdiff
path: root/kms
diff options
context:
space:
mode:
Diffstat (limited to 'kms')
-rw-r--r--kms/client/kms_client.c12
-rw-r--r--kms/server/kms_server.c2
2 files changed, 11 insertions, 3 deletions
diff --git a/kms/client/kms_client.c b/kms/client/kms_client.c
index ff8a3d5..aab5b01 100644
--- a/kms/client/kms_client.c
+++ b/kms/client/kms_client.c
@@ -140,6 +140,7 @@ static bool find_program_in_path(const char *program_name, char *filepath, int f
}
int gsr_kms_client_init(gsr_kms_client *self, const char *card_path) {
+ int result = -1;
self->kms_server_pid = -1;
self->socket_fd = -1;
self->client_fd = -1;
@@ -248,12 +249,19 @@ int gsr_kms_client_init(gsr_kms_client *self, const char *card_path) {
}
break;
} else {
- int status;
+ int status = 0;
int wait_result = waitpid(self->kms_server_pid, &status, WNOHANG);
if(wait_result != 0) {
fprintf(stderr, "gsr error: gsr_kms_client_init: kms server died or never started, error: %s\n", strerror(errno));
self->kms_server_pid = -1;
goto err;
+ } else if(WIFEXITED(status)) {
+ int exit_code = WEXITSTATUS(status);
+ fprintf(stderr, "gsr error: gsr_kms_client_init: kms server died or never started, exit code: %d\n", exit_code);
+ self->kms_server_pid = -1;
+ if(exit_code != 0)
+ result = exit_code;
+ goto err;
}
}
}
@@ -263,7 +271,7 @@ int gsr_kms_client_init(gsr_kms_client *self, const char *card_path) {
err:
gsr_kms_client_deinit(self);
- return -1;
+ return result;
}
void gsr_kms_client_deinit(gsr_kms_client *self) {
diff --git a/kms/server/kms_server.c b/kms/server/kms_server.c
index d2eb4e8..0ff0b03 100644
--- a/kms/server/kms_server.c
+++ b/kms/server/kms_server.c
@@ -338,7 +338,7 @@ int main(int argc, char **argv) {
if(drmSetClientCap(drm.drmfd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1) != 0) {
fprintf(stderr, "kms server error: drmSetClientCap DRM_CLIENT_CAP_UNIVERSAL_PLANES failed, error: %s\n", strerror(errno));
close(drm.drmfd);
- return 2;
+ return 10;
}
if(drmSetClientCap(drm.drmfd, DRM_CLIENT_CAP_ATOMIC, 1) != 0) {