diff --git a/Bot/bot.c b/Bot/bot.c index 8da91cb..51cc9f1 100644 --- a/Bot/bot.c +++ b/Bot/bot.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -42,7 +43,9 @@ extern int ircport; int ok_sock; struct sockaddr_in ok_addr; -void ok_close(int sock) { shutdown(sock, SHUT_RDWR);close(sock); } +void ok_close(int sock) { + while(close(sock) == 0); +} void ok_bot_kill(int sig) { fprintf(stderr, "Shutdown\n"); @@ -241,7 +244,16 @@ void ok_bot(void) { } } else if(sentin[0] == '#') { /* This was sent in channel */ - if(ok_news_write(nick, msg) != 0) { + pid_t pid = fork(); + int code; + if(pid == 0){ + _exit(ok_news_write(nick, msg)); + }else{ + int status; + waitpid(pid, &status, 0); + code = WEXITSTATUS(status); + } + if(code != 0) { sprintf(construct, "PRIVMSG %s :Could not send the message to the USENET", sentin); ircfw_socket_send_cmd(ok_sock, NULL, construct); } diff --git a/Bot/news.c b/Bot/news.c index f2700e0..4d9840c 100644 --- a/Bot/news.c +++ b/Bot/news.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -250,7 +251,7 @@ int ok_news_write(const char* nick, const char* message) { int nt_sock; struct sockaddr_in nt_addr; if((nt_sock = socket(PF_INET, SOCK_STREAM, 0)) < 0) { - fprintf(stderr, "Socket creation failure\n"); + fprintf(stderr, "Socket creation failure: %s\n", strerror(errno)); return 1; }