diff --git a/C/irc.c b/C/irc.c index 6f9fb4f..e890ff1 100644 --- a/C/irc.c +++ b/C/irc.c @@ -10,24 +10,24 @@ #include "irc.h" int IRCC_urecv(IRCC_client *irc) { -#ifdef ENABLE_SSL - if (irc->irc_usingssl) - return SSL_read(irc->irc_ssl, irc->irc_raw, sizeof(irc->irc_raw)); -#endif + #if defined(ENABLE_SSL) || defined(ENABLE_TLS) + if (irc->irc_usingssl) + return SSL_read(irc->irc_ssl, irc->irc_raw, sizeof(irc->irc_raw)); + #endif return recv(irc->irc_socket, irc->irc_raw, sizeof(irc->irc_raw), 0); } -int IRCC_usend(IRCC_client *irc, const char *msg, off_t bytes) { -#ifdef ENABLE_SSL - if (irc->irc_usingssl) - return SSL_write(irc->irc_ssl, msg, bytes); -#endif +int IRCC_usend(IRCC_client *irc, const char *msg, const int bytes) { + #if defined(ENABLE_SSL) || defined(ENABLE_TLS) + if (irc->irc_usingssl) + return SSL_write(irc->irc_ssl, msg, bytes); + #endif return send(irc->irc_socket, msg, bytes, 0); } -int IRCC_connect(IRCC_client *irc, const char *ip, const unsigned int port) { +int IRCC_connect(IRCC_client *irc, const char *ip, const int port) { struct hostent *hp = gethostbyname(ip); if (!hp) return IRCC_ERROR; @@ -145,7 +145,7 @@ int IRCC_parse(IRCC_client *irc) { } int IRCC_register(IRCC_client *irc, const char *nickname) { - off_t bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "NICK %s\r\n", nickname); + int bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "NICK %s\r\n", nickname); if (IRCC_usend(irc, irc->irc_raw, bytes) == -1) return IRCC_ERROR; @@ -168,7 +168,7 @@ int IRCC_register(IRCC_client *irc, const char *nickname) { } int IRCC_join(IRCC_client *irc, const char *channel, const char *key) { - off_t bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "JOIN %s %s\r\n", channel, (key) ? key : ""); + ssize_t bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "JOIN %s %s\r\n", channel, (key) ? key : ""); if (IRCC_usend(irc, irc->irc_raw, bytes) == -1) return IRCC_ERROR; @@ -176,7 +176,7 @@ int IRCC_join(IRCC_client *irc, const char *channel, const char *key) { } int IRCC_send(IRCC_client *irc, const char *channel, const char *msg) { - off_t bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "PRIVMSG %s :%s\r\n", channel, msg); + ssize_t bytes = snprintf(irc->irc_raw, sizeof(irc->irc_raw), "PRIVMSG %s :%s\r\n", channel, msg); if (IRCC_usend(irc, irc->irc_raw, bytes) == -1) return IRCC_ERROR; @@ -185,33 +185,34 @@ int IRCC_send(IRCC_client *irc, const char *channel, const char *msg) { } int IRCC_initssl(IRCC_client *irc) { -#ifdef ENABLE_SSL - irc->irc_ssl = NULL; - irc->irc_sslctx = NULL; - irc->irc_sslmethod = NULL; + #if defined(ENABLE_SSL) || defined(ENABLE_TLS) + irc->irc_ssl = NULL; + irc->irc_sslctx = NULL; + irc->irc_sslmethod = NULL; - OpenSSL_add_all_algorithms(); + OpenSSL_add_all_algorithms(); - if (SSL_library_init() < 0) - return IRCC_ERROR; + if (SSL_library_init() < 0) + return IRCC_ERROR; - irc->irc_sslmethod = (SSL_METHOD *)SSLv23_client_method(); - irc->irc_sslctx = SSL_CTX_new(irc->irc_sslmethod); - if (irc->irc_sslctx == NULL) - return IRCC_ERROR; + irc->irc_sslmethod = (SSL_METHOD *)SSLv23_client_method(); + irc->irc_sslctx = SSL_CTX_new(irc->irc_sslmethod); + if (irc->irc_sslctx == NULL) + return IRCC_ERROR; - SSL_CTX_set_options(irc->irc_sslctx, SSL_OP_NO_SSLv2); - irc->irc_ssl = SSL_new(irc->irc_sslctx); + SSL_CTX_set_options(irc->irc_sslctx, SSL_OP_NO_SSLv2); + irc->irc_ssl = SSL_new(irc->irc_sslctx); - SSL_set_fd(irc->irc_ssl, irc->irc_socket); - if (SSL_connect(irc->irc_ssl) != 1) - return IRCC_ERROR; + SSL_set_fd(irc->irc_ssl, irc->irc_socket); + if (SSL_connect(irc->irc_ssl) != 1) + return IRCC_ERROR; - irc->irc_usingssl = 1; + irc->irc_usingssl = 1; -#else - (void)irc; -#endif + #else + (void)irc; + + #endif return IRCC_SUCCESS; } @@ -220,17 +221,16 @@ void IRCC_close(IRCC_client *irc) { close(irc->irc_socket); irc->irc_msg = irc->irc_nick = irc->irc_channel = NULL; -#ifdef ENABLE_SSL - if (!irc->irc_usingssl) - return; + #if defined(ENABLE_SSL) || defined(ENABLE_TLS) + if (!irc->irc_usingssl) + return; - if (irc->irc_ssl != NULL) { - SSL_shutdown(irc->irc_ssl); - SSL_free(irc->irc_ssl); - } + if (irc->irc_ssl != NULL) { + SSL_shutdown(irc->irc_ssl); + SSL_free(irc->irc_ssl); + } - if (irc->irc_sslctx != NULL) - SSL_CTX_free(irc->irc_sslctx); -#endif + if (irc->irc_sslctx != NULL) + SSL_CTX_free(irc->irc_sslctx); + #endif } - diff --git a/C/irc.h b/C/irc.h index ec55041..64d9b13 100644 --- a/C/irc.h +++ b/C/irc.h @@ -12,9 +12,10 @@ #define IRCC_MSG_MAX 512 #define IRCC_PING_TIMEOUT 600 +#define IRCC_VERSION "2.0" -#ifdef ENABLE_SSL -#include +#if defined(ENABLE_SSL) || defined(ENABLE_TLS) + #include #endif enum { @@ -33,23 +34,28 @@ enum { }; typedef struct { + /* RW */ int irc_socket; char irc_raw[IRCC_MSG_MAX + 1]; + + /* RONLY */ char *irc_msg; char *irc_channel; char *irc_nick; -#ifdef ENABLE_SSL - int irc_usingssl; + #if defined(ENABLE_SSL) || defined(ENABLE_TLS) + /* RONLY */ + int irc_usingssl; + + SSL_METHOD *irc_sslmethod; + SSL_CTX *irc_sslctx; + SSL *irc_ssl; + #endif - SSL_METHOD *irc_sslmethod; - SSL_CTX *irc_sslctx; - SSL *irc_ssl; -#endif } IRCC_client; -int IRCC_connect(IRCC_client *irc, const char *ip, const unsigned int port); +int IRCC_connect(IRCC_client *irc, const char *ip, const int port); int IRCC_recv(IRCC_client *irc); int IRCC_parse(IRCC_client *irc); int IRCC_join(IRCC_client *irc, const char *channel, const char *key); @@ -58,8 +64,8 @@ int IRCC_register(IRCC_client *irc, const char *nickname); int IRCC_initssl(IRCC_client *irc); void IRCC_close(IRCC_client *irc); -//u - mean universal. Functions uses internal fields in structure -int IRCC_usend(IRCC_client *irc, const char *msg, off_t bytes); +/* Raw data operations. Uses tls when possible */ +int IRCC_usend(IRCC_client *irc, const char *msg, const int bytes); int IRCC_urecv(IRCC_client *irc); #endif