| 416 | } |
| 417 | |
| 418 | int BindSocket(Socket* sock, const sockaddr* addr, socklen_t addrlen){ |
| 419 | char* address = (char*)kmalloc(addrlen + 1); |
| 420 | strncpy(address, addr->data, addrlen); |
| 421 | address[addrlen] = 0; |
| 422 | |
| 423 | for(unsigned i = 0; i < sockets.get_length(); i++){ |
| 424 | if(strcmp(sockets.get_at(i).address, address) == 0) { |
| 425 | kfree(address); |
| 426 | return -1; // Address in use |
| 427 | } |
| 428 | } |
| 429 | |
| 430 | SocketBinding binding; |
| 431 | binding.address = address; |
| 432 | binding.socket = sock; |
| 433 | |
| 434 | sockets.add_back(binding); |
| 435 | |
| 436 | return 0; |
| 437 | } |
| 438 | |
| 439 | void DestroySocket(Socket* sock){ |
| 440 | for(unsigned i = 0; i < sockets.get_length(); i++){ |