Mercurial > cabal
comparison sources/network.cpp @ 5:0faceb076254
code clean up
added PID to the default Core argument
bool => true|false
| author | Vlad Glagolev <enqlave@gmail.com> |
|---|---|
| date | Thu, 24 Jan 2008 21:00:52 +0300 |
| parents | a7051ac7118b |
| children | 9be05a31b7f9 |
comparison
equal
deleted
inserted
replaced
| 4:a7051ac7118b | 5:0faceb076254 |
|---|---|
| 71 } | 71 } |
| 72 | 72 |
| 73 err = recv(cs, &cbuffer, 1, 0); | 73 err = recv(cs, &cbuffer, 1, 0); |
| 74 | 74 |
| 75 if (!err) | 75 if (!err) |
| 76 shut ("remote server closed connection"); | 76 shut("remote server closed connection"); |
| 77 else if (err < 0) | 77 else if (err < 0) |
| 78 shut ("failed to receive data"); | 78 shut("failed to receive data"); |
| 79 else | 79 else |
| 80 sbuffer += cbuffer; | 80 sbuffer += cbuffer; |
| 81 } | 81 } |
| 82 } else if (!err) | 82 } else if (!err) |
| 83 shut ("remote server closed connection"); | 83 shut("remote server closed connection"); |
| 84 | 84 |
| 85 return sbuffer; | 85 return sbuffer; |
| 86 } | 86 } |
| 87 | 87 |
| 88 return ""; | 88 return ""; |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool Network::resolveHost(pchar name, struct address_type *a, int inet) | 91 bool Network::resolveHost(pchar name, struct address_type *a, int inet) |
| 92 { | 92 { |
| 93 #ifdef ENABLE_IPV6 | 93 #ifdef ENABLE_IPV6 |
| 94 bool e = 0; | 94 bool e = false; |
| 95 | 95 |
| 96 struct addrinfo hints, *res, *reso; | 96 struct addrinfo hints, *res, *reso; |
| 97 struct sockaddr_in *in; | 97 struct sockaddr_in *in; |
| 98 struct sockaddr_in6 *in6; | 98 struct sockaddr_in6 *in6; |
| 99 | 99 |
| 112 case AF_INET6: | 112 case AF_INET6: |
| 113 a->inet = AF_INET6; | 113 a->inet = AF_INET6; |
| 114 in6 = (struct sockaddr_in6 *)res->ai_addr; | 114 in6 = (struct sockaddr_in6 *)res->ai_addr; |
| 115 memcpy (&a->sa6.sin6_addr, &in6->sin6_addr, \ | 115 memcpy (&a->sa6.sin6_addr, &in6->sin6_addr, \ |
| 116 sizeof (struct in6_addr)); | 116 sizeof (struct in6_addr)); |
| 117 e = 1; | 117 e = true; |
| 118 break; | 118 break; |
| 119 case AF_INET: | 119 case AF_INET: |
| 120 a->inet = AF_INET; | 120 a->inet = AF_INET; |
| 121 in = (struct sockaddr_in *)res->ai_addr; | 121 in = (struct sockaddr_in *)res->ai_addr; |
| 122 memcpy (&a->sa.sin_addr, &in->sin_addr, \ | 122 memcpy (&a->sa.sin_addr, &in->sin_addr, \ |
| 123 sizeof (struct in_addr)); | 123 sizeof (struct in_addr)); |
| 124 e = 1; | 124 e = true; |
| 125 break; | 125 break; |
| 126 default: | 126 default: |
| 127 e = 0; | 127 e = false; |
| 128 } | 128 } |
| 129 } | 129 } |
| 130 | 130 |
| 131 if (e) | 131 if (e) |
| 132 break; | 132 break; |
| 174 | 174 |
| 175 int e; | 175 int e; |
| 176 | 176 |
| 177 #ifdef ENABLE_IPV6 | 177 #ifdef ENABLE_IPV6 |
| 178 if (a.inet == AF_INET6) | 178 if (a.inet == AF_INET6) |
| 179 e = bind(cs, (struct sockaddr *)&a.sa6, sizeof (a.sa6)); | 179 e = bind(cs, (struct sockaddr *)&a.sa6, sizeof(a.sa6)); |
| 180 else | 180 else |
| 181 #endif // ENABLE_IPV6 | 181 #endif // ENABLE_IPV6 |
| 182 e = bind(cs, (struct sockaddr *)&a.sa, sizeof (a.sa)); | 182 e = bind(cs, (struct sockaddr *)&a.sa, sizeof(a.sa)); |
| 183 | 183 |
| 184 if (e == -1) { | 184 if (e == -1) { |
| 185 close(cs); | 185 close(cs); |
| 186 return 0; | 186 return 0; |
| 187 } | 187 } |
| 205 setsockopt(cs, IPPROTO_TCP, TCP_NODELAY, (pchar)&parm, sizeof(parm)); | 205 setsockopt(cs, IPPROTO_TCP, TCP_NODELAY, (pchar)&parm, sizeof(parm)); |
| 206 | 206 |
| 207 connected = 0; | 207 connected = 0; |
| 208 connecting = 1; | 208 connecting = 1; |
| 209 | 209 |
| 210 cout << "NETWORK: socket opened........... " << cs << endl; | 210 cout << "NETWORK: socket opened..........: " << cs << endl; |
| 211 | 211 |
| 212 return 1; | 212 return 1; |
| 213 } | 213 } |
| 214 | 214 |
| 215 bool Network::openHost() | 215 bool Network::openHost() |
| 222 #endif // ENABLE_IPV6 | 222 #endif // ENABLE_IPV6 |
| 223 e = connect(cs, (struct sockaddr *)&address.sa, sizeof(address.sa)); | 223 e = connect(cs, (struct sockaddr *)&address.sa, sizeof(address.sa)); |
| 224 | 224 |
| 225 if (e == -1) { | 225 if (e == -1) { |
| 226 if (errno == EISCONN) { | 226 if (errno == EISCONN) { |
| 227 connected = 1; | 227 connected = true; |
| 228 connecting = 0; | 228 connecting = false; |
| 229 | 229 |
| 230 return 1; | 230 return 1; |
| 231 } | 231 } |
| 232 | 232 |
| 233 if (errno != EWOULDBLOCK && errno != EINPROGRESS && errno != EALREADY) { | 233 if (errno != EWOULDBLOCK && errno != EINPROGRESS && errno != EALREADY) { |
| 234 closeSocket(); | 234 closeSocket(); |
| 235 | 235 |
| 236 connecting = 0; | 236 connecting = false; |
| 237 | 237 |
| 238 return 0; | 238 return 0; |
| 239 } | 239 } |
| 240 | 240 |
| 241 return 1; | 241 return 1; |
| 242 } | 242 } |
| 243 | 243 |
| 244 connected = 1; | 244 connected = true; |
| 245 connecting = 0; | 245 connecting = false; |
| 246 | 246 |
| 247 cout << "NETWORK: socket connected........ " << cs << endl; | 247 cout << "NETWORK: socket connected.......: " << cs << endl; |
| 248 | 248 |
| 249 return 1; | 249 return 1; |
| 250 } | 250 } |
| 251 | 251 |
| 252 bool Network::closeSocket() | 252 bool Network::closeSocket() |
