Changeset 5619:16fe78ec277c in roaraudio
- Timestamp:
- 08/09/12 00:01:15 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r5618 r5619 4 4 * Converted roard's protocol-irc plugin to CPI (Closes: #295) 5 5 * Updated protocol magic numbers (See: #262) 6 * Implemented watchdog (Closes: #291) 6 7 7 8 v. 1.0beta4 - Mon Aug 06 2012 16:43 CEST -
include/libroar/libroar.h
r5517 r5619 188 188 #include "asyncctl.h" 189 189 #include "kstore.h" 190 #include "watchdog.h" 190 191 191 192 // some basic macros: … … 245 246 ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE, 246 247 #define ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE 248 ROAR_FATAL_ERROR_WATCHDOG, 249 #define ROAR_FATAL_ERROR_WATCHDOG ROAR_FATAL_ERROR_WATCHDOG 247 250 248 251 ROAR_FATAL_ERROR_EOL -
include/libroar/roarfeatures.h
r5609 r5619 65 65 #define ROAR_FT_FEATURE_COMMON_PROTO /* see #257 */ 66 66 #define ROAR_FT_FEATURE_SELECTOR_HANDLING /* see #285 */ 67 #define ROAR_FT_FEATURE_WATCHDOG /* see #291 */ 67 68 68 69 // libroar2 features: -
libroar/Makefile
r5529 r5619 11 11 PASSWORD=passwordapi.o pinentry.o sshaskpass.o 12 12 CRYPTO=crypto.o random.o $(HASHES) crc.o 13 OBJS=libroar.o config.o debug.o error.o basic.o stream.o client.o simple.o auth.o socket.o ctl.o buffer.o meta.o file.o acl.o cdrom.o $(PASSWORD) $(VIO) stack.o slp.o nnode.o roardl.o plugincontainer.o roarx11.o beep.o proto.o env.o keyval.o vs.o ltm.o notify.o notify_proxy.o asyncctl.o enumdev.o serverinfo.o $(CRYPTO) authfile.o caps.o roarfloat.o base64.o trap.o memmgr.o time.o kstore.o uuid.o 13 OBJS=libroar.o config.o debug.o error.o basic.o stream.o client.o simple.o auth.o socket.o ctl.o buffer.o meta.o file.o acl.o cdrom.o $(PASSWORD) $(VIO) stack.o slp.o nnode.o roardl.o plugincontainer.o roarx11.o beep.o proto.o env.o keyval.o vs.o ltm.o notify.o notify_proxy.o asyncctl.o enumdev.o serverinfo.o $(CRYPTO) authfile.o caps.o roarfloat.o base64.o trap.o memmgr.o time.o kstore.o uuid.o watchdog.o 14 14 15 15 #DEFINES = -DDEBUG -
libroar/basic.c
r5608 r5619 91 91 return -1; 92 92 } else if ( r == 0 ) { // we are the child 93 roar_watchdog_stop(); 94 93 95 close(socks[0]); 94 96 … … 113 115 // we are still alive? 114 116 ROAR_ERR("_start_server(*): alive after exec(), that's bad!"); 115 _exit(1);117 ROAR_U_EXIT(1); 116 118 } else { // we are the parent 117 119 close(socks[1]); -
libroar/cdrom.c
r5381 r5619 36 36 #include "libroar.h" 37 37 38 #define ROAR_CDROM_ERROR_NORETURN(format, args...) ROAR_ERR(format, ## args); _exit(3)38 #define ROAR_CDROM_ERROR_NORETURN(format, args...) ROAR_ERR(format, ## args); ROAR_U_EXIT(3) 39 39 40 40 #if BYTE_ORDER == BIG_ENDIAN -
libroar/libroar.c
r5390 r5619 107 107 struct timespec left; 108 108 109 if ( t > (uint_least32_t)1000000 ) {109 if ( t >= (uint_least32_t)1000000 ) { 110 110 tv.tv_sec = t/(uint_least32_t)1000000; 111 111 t -= tv.tv_sec*(uint_least32_t)1000000; … … 321 321 errname = "Memory double freed"; 322 322 break; 323 case ROAR_FATAL_ERROR_WATCHDOG: 324 errname = "Watchdog Timeout"; 325 break; 323 326 default: 324 327 errname = "<unknown error code, BAD>"; … … 332 335 #endif 333 336 abort(); 337 #ifdef ROAR_HAVE_U_EXIT 338 ROAR_U_EXIT(1); 339 #endif 334 340 335 341 while(1); -
libroar/pinentry.c
r5381 r5619 99 99 break; 100 100 case 0: 101 roar_watchdog_stop(); 102 101 103 close(in[0]); 102 104 close(out[1]); … … 105 107 106 108 if ( dup2(out[0], ROAR_STDIN) == -1 ) 107 _exit(1);109 ROAR_U_EXIT(1); 108 110 109 111 if ( dup2(in[1], ROAR_STDOUT) == -1 ) 110 _exit(1);112 ROAR_U_EXIT(1); 111 113 112 114 execlp(ROAR_HAVE_BIN_PINENTRY, "RoarAudio", "--display", display, "--ttytype", term, "--ttyname", tty, NULL); 113 115 114 _exit(1);116 ROAR_U_EXIT(1); 115 117 break; 116 118 } -
libroar/socket.c
r5554 r5619 1176 1176 return -1; 1177 1177 } else if ( r == 0 ) { // we are the child 1178 roar_watchdog_stop(); 1179 1178 1180 close(socks[0]); 1179 1181 … … 1189 1191 // we are still alive? 1190 1192 ROAR_ERR("roar_socket_open_ssh(*): alive after exec(), that's bad!"); 1191 _exit(1);1193 ROAR_U_EXIT(1); 1192 1194 } else { // we are the parent 1193 1195 close(socks[1]); -
libroar/vio_cmd.c
r5405 r5619 172 172 break; 173 173 case 0: 174 roar_watchdog_stop(); 175 174 176 close(in[0]); 175 177 close(out[1]); … … 178 180 179 181 if ( dup2(out[0], ROAR_STDIN) == -1 ) 180 _exit(1);182 ROAR_U_EXIT(1); 181 183 182 184 if ( dup2(in[1], ROAR_STDOUT) == -1 ) 183 _exit(1);185 ROAR_U_EXIT(1); 184 186 185 187 execlp("/bin/sh", "/bin/sh", "-c", child->cmd, (_LIBROAR_GOOD_CAST char*)NULL); 186 188 187 _exit(1);189 ROAR_U_EXIT(1); 188 190 break; 189 191 } -
roard/lib.c
r5586 r5619 34 34 ROAR_WARN("lib_run_bg(cmd='%s', ...): This function should never be called. Contact devels."); 35 35 36 child = fork();36 child = roar_fork(NULL); 37 37 38 38 if ( child == -1 ) { … … 47 47 48 48 // we are the child. 49 // first we need to close a lot of open files! 49 50 // first stop the watchdog. 51 roar_watchdog_stop(); 52 53 // then we need to close a lot of open files! 50 54 51 55 // before we do this we need to keep backups of our handles: -
roard/loop.c
r5586 r5619 62 62 63 63 ROAR_DBG("main_loop(*): looping..."); 64 65 roar_watchdog_trigger(); 64 66 65 67 #ifdef ROAR_SUPPORT_LISTEN -
roard/roard.c
r5592 r5619 224 224 " give multible times for being more realtime\n" 225 225 " --memlock LEVEL - Set default memory locking level to LEVEL\n" 226 " --watchdog - Enable watchdog\n" 227 " --watchdog-time TIME - Set watchdog time to TIME (in ms)\n" 226 228 #ifdef ROAR_HAVE_CHROOT 227 229 " --chroot DIR - chroots to the given dir\n" … … 1428 1430 int daemon = 0; 1429 1431 #endif 1432 int_least32_t watchdog_time = 0; // -1: default, 0: disabled, > 0: user set time. 1430 1433 int realtime = 0; 1431 1434 int sysclocksync = 0; … … 1700 1703 _CKHAVEARGS(1); 1701 1704 g_config->memlock_level = memlock_str2level(argv[++i]); 1705 } else if ( strcmp(k, "--watchdog") == 0 ) { 1706 if ( watchdog_time == 0 ) 1707 watchdog_time = -1; 1708 } else if ( strcmp(k, "--watchdog-time") == 0 ) { 1709 _CKHAVEARGS(1); 1710 watchdog_time = atoi(argv[++i]); 1702 1711 } else if ( strcmp(k, "--chroot") == 0 ) { 1703 1712 _CKHAVEARGS(1); … … 2581 2590 close(ROAR_STDERR); 2582 2591 2583 if ( fork() )2592 if ( roar_fork(NULL) ) 2584 2593 ROAR_U_EXIT(0); 2585 2594 … … 2591 2600 } 2592 2601 #endif 2602 2603 if ( watchdog_time ) { 2604 if ( watchdog_time == -1 ) 2605 watchdog_time = 5000; 2606 roar_watchdog_start(ROAR_WATCHDOG_CONF_DEFAULTS, watchdog_time, NULL); 2607 } 2593 2608 2594 2609 #if defined(ROAR_HAVE_SETUID) && defined(ROAR_HAVE_IO_POSIX)
Note: See TracChangeset
for help on using the changeset viewer.