diff options
author | irungentoo <irungentoo@gmail.com> | 2013-07-24 05:26:03 -0700 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-07-24 05:26:03 -0700 |
commit | 57e7ed7c10927858e1ee994111d3e5a3516cd9f0 (patch) | |
tree | f36749ee3e277f3c04091821374596797dfbaa42 /core | |
parent | 3b53bc3218a8ffd149d4a93bb62becab41da7ae1 (diff) | |
parent | 92398844a05bf5f0ce4333e0d4bd03c6e6633f77 (diff) |
Merge pull request #99 from Astonex/master
Simple init_networking() error checking
Diffstat (limited to 'core')
-rw-r--r-- | core/Messenger.c | 8 | ||||
-rw-r--r-- | core/Messenger.h | 6 | ||||
-rw-r--r-- | core/network.c | 19 | ||||
-rw-r--r-- | core/network.h | 3 |
4 files changed, 26 insertions, 10 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)) | |||
393 | 393 | ||
394 | #define PORT 33445 | 394 | #define PORT 33445 |
395 | /* run this at startup */ | 395 | /* run this at startup */ |
396 | void initMessenger() | 396 | int initMessenger() |
397 | { | 397 | { |
398 | new_keys(); | 398 | new_keys(); |
399 | m_set_userstatus((uint8_t*)"Online", sizeof("Online")); | 399 | m_set_userstatus((uint8_t*)"Online", sizeof("Online")); |
400 | initNetCrypto(); | 400 | initNetCrypto(); |
401 | IP ip; | 401 | IP ip; |
402 | ip.i = 0; | 402 | ip.i = 0; |
403 | init_networking(ip, PORT); | 403 | |
404 | if(init_networking(ip,PORT) == -1) | ||
405 | return -1; | ||
406 | |||
407 | return 0; | ||
404 | } | 408 | } |
405 | 409 | ||
406 | static void doFriends() | 410 | 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)); | |||
132 | you are not responsible for freeing newstatus */ | 132 | you are not responsible for freeing newstatus */ |
133 | void m_callback_userstatus(void (*function)(int, uint8_t *, uint16_t)); | 133 | void m_callback_userstatus(void (*function)(int, uint8_t *, uint16_t)); |
134 | 134 | ||
135 | /* run this at startup */ | 135 | /* run this at startup |
136 | void initMessenger(); | 136 | returns 0 if no connection problems |
137 | returns -1 if there are problems */ | ||
138 | int initMessenger(); | ||
137 | 139 | ||
138 | 140 | ||
139 | /* the main loop that needs to be run at least 200 times per second */ | 141 | /* 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..bc6738ac 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) | |||
101 | bind to ip and port | 101 | bind to ip and port |
102 | ip must be in network order EX: 127.0.0.1 = (7F000001) | 102 | ip must be in network order EX: 127.0.0.1 = (7F000001) |
103 | port is in host byte order (this means don't worry about it) | 103 | port is in host byte order (this means don't worry about it) |
104 | returns 0 if no problems | 104 | returns 0 if no problems |
105 | TODO: add something to check if there are errors */ | 105 | returns -1 if there are problems */ |
106 | int init_networking(IP ip ,uint16_t port) | 106 | int init_networking(IP ip ,uint16_t port) |
107 | { | 107 | { |
108 | #ifdef WIN32 | 108 | #ifdef WIN32 |
@@ -119,7 +119,17 @@ int init_networking(IP ip ,uint16_t port) | |||
119 | 119 | ||
120 | /* initialize our socket */ | 120 | /* initialize our socket */ |
121 | sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); | 121 | sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); |
122 | 122 | ||
123 | /* Check for socket error */ | ||
124 | #ifdef WIN32 | ||
125 | if (sock == INVALID_SOCKET) //MSDN recommends this | ||
126 | return -1; | ||
127 | #else | ||
128 | if (sock < 0) | ||
129 | return -1; | ||
130 | #endif | ||
131 | |||
132 | |||
123 | /* Functions to increase the size of the send and receive UDP buffers | 133 | /* Functions to increase the size of the send and receive UDP buffers |
124 | NOTE: uncomment if necessary */ | 134 | NOTE: uncomment if necessary */ |
125 | /* | 135 | /* |
@@ -146,7 +156,8 @@ int init_networking(IP ip ,uint16_t port) | |||
146 | 156 | ||
147 | /* Bind our socket to port PORT and address 0.0.0.0 */ | 157 | /* Bind our socket to port PORT and address 0.0.0.0 */ |
148 | ADDR addr = {AF_INET, htons(port), ip}; | 158 | ADDR addr = {AF_INET, htons(port), ip}; |
149 | bind(sock, (struct sockaddr*)&addr, sizeof(addr)); | 159 | bind(sock, (struct sockaddr*)&addr, sizeof(addr)); |
160 | |||
150 | return 0; | 161 | return 0; |
151 | 162 | ||
152 | } | 163 | } |
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); | |||
121 | ip must be in network order EX: 127.0.0.1 = (7F000001) | 121 | ip must be in network order EX: 127.0.0.1 = (7F000001) |
122 | port is in host byte order (this means don't worry about it) | 122 | port is in host byte order (this means don't worry about it) |
123 | returns 0 if no problems | 123 | returns 0 if no problems |
124 | TODO: add something to check if there are errors */ | 124 | returns -1 if there were problems */ |
125 | int init_networking(IP ip ,uint16_t port); | 125 | int init_networking(IP ip ,uint16_t port); |
126 | 126 | ||
127 | |||
128 | /* function to cleanup networking stuff(doesn't do much right now) */ | 127 | /* function to cleanup networking stuff(doesn't do much right now) */ |
129 | void shutdown_networking(); | 128 | void shutdown_networking(); |
130 | 129 | ||