From 29aa702a4f0cc50c091e0e9624d5ee897138ddf3 Mon Sep 17 00:00:00 2001 From: Astonex Date: Wed, 24 Jul 2013 00:32:50 +0100 Subject: Added simple init_networking() error checking --- core/Messenger.c | 8 ++++++-- core/Messenger.h | 6 ++++-- core/network.c | 8 +++++--- core/network.h | 3 +-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/Messenger.c b/core/Messenger.c index 1330e8ed..043700e5 100644 --- a/core/Messenger.c +++ b/core/Messenger.c @@ -393,14 +393,18 @@ void m_callback_userstatus(void (*function)(int, uint8_t *, uint16_t)) #define PORT 33445 /* run this at startup */ -void initMessenger() +int initMessenger() { new_keys(); m_set_userstatus((uint8_t*)"Online", sizeof("Online")); initNetCrypto(); IP ip; ip.i = 0; - init_networking(ip, PORT); + + if(init_networking(ip,PORT) == -1) + return -1; + + return 0; } static void doFriends() diff --git a/core/Messenger.h b/core/Messenger.h index 2484692c..6afe84ac 100644 --- a/core/Messenger.h +++ b/core/Messenger.h @@ -132,8 +132,10 @@ void m_callback_namechange(void (*function)(int, uint8_t *, uint16_t)); you are not responsible for freeing newstatus */ void m_callback_userstatus(void (*function)(int, uint8_t *, uint16_t)); -/* run this at startup */ -void initMessenger(); +/* run this at startup + returns 0 if no connection problems + returns -1 if there are problems */ +int initMessenger(); /* the main loop that needs to be run at least 200 times per second */ diff --git a/core/network.c b/core/network.c index 6337651a..fa6c99fc 100644 --- a/core/network.c +++ b/core/network.c @@ -101,8 +101,8 @@ int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length) bind to ip and port ip must be in network order EX: 127.0.0.1 = (7F000001) port is in host byte order (this means don't worry about it) - returns 0 if no problems - TODO: add something to check if there are errors */ + returns 0 if no problems + returns -1 if there are problems */ int init_networking(IP ip ,uint16_t port) { #ifdef WIN32 @@ -146,7 +146,9 @@ int init_networking(IP ip ,uint16_t port) /* Bind our socket to port PORT and address 0.0.0.0 */ ADDR addr = {AF_INET, htons(port), ip}; - bind(sock, (struct sockaddr*)&addr, sizeof(addr)); + if(bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == -1) + return -1; + return 0; } diff --git a/core/network.h b/core/network.h index 6f140d0c..62169d88 100644 --- a/core/network.h +++ b/core/network.h @@ -121,10 +121,9 @@ int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length); ip must be in network order EX: 127.0.0.1 = (7F000001) port is in host byte order (this means don't worry about it) returns 0 if no problems - TODO: add something to check if there are errors */ + returns -1 if there were problems */ int init_networking(IP ip ,uint16_t port); - /* function to cleanup networking stuff(doesn't do much right now) */ void shutdown_networking(); -- cgit v1.2.3