diff options
-rw-r--r-- | src/main.c | 6 | ||||
-rw-r--r-- | src/modem.c | 23 |
2 files changed, 6 insertions, 23 deletions
@@ -246,7 +246,7 @@ void telnet_server(struct prog_params params) int server_socket, client_socket; struct sockaddr_in socket_address, client_address; - size_t claddrsize = sizeof(client_address); + socklen_t claddrsize = sizeof(client_address); if ( (server_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { @@ -259,7 +259,7 @@ void telnet_server(struct prog_params params) socket_address.sin_family = AF_INET; socket_address.sin_port = htons( params.port ); - if ( (bind(server_socket, &socket_address, sizeof(socket_address))) == -1 ) + if ( (bind(server_socket, (struct sockaddr*) &socket_address, sizeof(socket_address))) == -1 ) { printf("Error binding socket: %i: %s\n", errno, strerror(errno)); exit(1); @@ -273,7 +273,7 @@ void telnet_server(struct prog_params params) while(1) { - client_socket = accept(server_socket, &client_address, &claddrsize); + client_socket = accept(server_socket, (struct sockaddr*)&client_address, &claddrsize); DEBUG_PRINTF("Connection: %s\n", inet_ntoa(client_address.sin_addr)); handle_connection(client_socket, client_address, params.run_argc, params.run_argv); } diff --git a/src/modem.c b/src/modem.c index 9f79ee2..5b0daba 100644 --- a/src/modem.c +++ b/src/modem.c @@ -129,26 +129,6 @@ int modem_run(int fd, int argc, char* argv[]) pid_t pid = fork_run(in[0], out[1], out[1], argc, argv);//fork(); -/* if(pid == 0) {//child - close (in[1]); - close (out[0]); - - dup2 (in[0], STDIN_FILENO); - dup2 (out[1], STDOUT_FILENO); - dup2 (out[1], STDERR_FILENO); - - char* arv[argc + 1]; - - for(int i = 0; i < argc; i++) - arv[i] = argv[i]; - - arv[argc] = NULL; - - execv(argv[0], arv); - - printf("EXEC ERROR %i: %s\r\n", errno, strerror(errno)); - exit(1); - }*/ if (pid < 0) {//error return 2; } @@ -204,6 +184,9 @@ int modem_run(int fd, int argc, char* argv[]) } } + if(ret < 0) + break; + if(kill(pid,0)) //Check if child is still alive, if not return. break; } |