projects
/
svn42.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6124795
)
reopening door device after errro
author
Christian Pointner
<equinox@realraum.at>
Wed, 27 May 2009 17:31:42 +0000
(17:31 +0000)
committer
Christian Pointner
<equinox@realraum.at>
Wed, 27 May 2009 17:31:42 +0000
(17:31 +0000)
door_daemon/door_daemon.c
patch
|
blob
|
history
diff --git
a/door_daemon/door_daemon.c
b/door_daemon/door_daemon.c
index
779d085
..
4288baf
100644
(file)
--- a/
door_daemon/door_daemon.c
+++ b/
door_daemon/door_daemon.c
@@
-490,41
+490,44
@@
int main(int argc, char* argv[])
fclose(pid_file);
}
fclose(pid_file);
}
- int door_fd = open(opt.door_dev_, O_RDWR | O_NOCTTY);
- if(door_fd < 0) {
- log_printf(ERROR, "unable to open %s: %s", opt.door_dev_, strerror(errno));
- options_clear(&opt);
- log_close();
- exit(-1);
- }
- ret = setup_tty(door_fd);
- if(ret) {
- close(door_fd);
- options_clear(&opt);
- log_close();
- exit(-1);
- }
-
-
int cmd_listen_fd = init_command_socket(opt.command_sock_);
if(cmd_listen_fd < 0) {
int cmd_listen_fd = init_command_socket(opt.command_sock_);
if(cmd_listen_fd < 0) {
- close(door_fd);
options_clear(&opt);
log_close();
exit(-1);
}
options_clear(&opt);
log_close();
exit(-1);
}
+
+ int door_fd = 0;
+ for(;;) {
+ door_fd = open(opt.door_dev_, O_RDWR | O_NOCTTY);
+ if(door_fd < 0)
+ ret = 2;
+ else {
+ ret = setup_tty(door_fd);
+ if(ret)
+ ret = 2;
+ else
+ ret = main_loop(door_fd, cmd_listen_fd);
+ }
- ret = main_loop(door_fd, cmd_listen_fd);
+ if(ret == 2) {
+ log_printf(ERROR, "%s error, trying to reopen in 5 seconds..", opt.door_dev_);
+ if(door_fd > 0)
+ close(door_fd);
+ sleep(5);
+ }
+ else
+ break;
+ }
close(cmd_listen_fd);
close(cmd_listen_fd);
- close(door_fd);
+ if(door_fd > 0)
+ close(door_fd);
if(!ret)
log_printf(NOTICE, "normal shutdown");
else if(ret < 0)
log_printf(NOTICE, "shutdown after error");
if(!ret)
log_printf(NOTICE, "normal shutdown");
else if(ret < 0)
log_printf(NOTICE, "shutdown after error");
- else if(ret == 2)
- log_printf(ERROR, "shutdown after %s read error", opt.door_dev_);
else
log_printf(NOTICE, "shutdown after signal");
else
log_printf(NOTICE, "shutdown after signal");