diff options
Diffstat (limited to 'code/core/posix')
-rw-r--r-- | code/core/posix/transport.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/code/core/posix/transport.c b/code/core/posix/transport.c index 1787c66..da87342 100644 --- a/code/core/posix/transport.c +++ b/code/core/posix/transport.c @@ -21,6 +21,7 @@ static int t_addr_set(ECPNetAddr *addr, void *addr_s) { char addr_c[ADDR_S_MAX]; char *colon = NULL; char *endptr = NULL; + uint16_t hport; memset(addr_c, 0, sizeof(addr_c)); strncpy(addr_c, addr_s, ADDR_S_MAX-1); @@ -31,9 +32,10 @@ static int t_addr_set(ECPNetAddr *addr, void *addr_s) { if (*colon == '\0') return -1; rv = inet_pton(AF_INET, addr_c, addr->host); if (rv != 1) return -1; - addr->port = strtol(colon, &endptr, 10); + hport = strtol(colon, &endptr, 10); if (*endptr != '\0') return -1; - + addr->port = htons(hport); + return 0; } @@ -48,7 +50,7 @@ static int t_open(int *sock, void *addr_s) { if (rv) return rv; memcpy((void *)&_myaddr.sin_addr, addr.host, sizeof(addr.host)); - _myaddr.sin_port = htons(addr.port); + _myaddr.sin_port = addr.port; } else { _myaddr.sin_addr.s_addr = htonl(INADDR_ANY); _myaddr.sin_port = htons(0); @@ -81,7 +83,7 @@ static ssize_t t_send(int *sock, void *msg, size_t msg_size, ECPNetAddr *addr) { memset((void *)&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; - servaddr.sin_port = htons(addr->port); + servaddr.sin_port = addr->port; memcpy((void *)&servaddr.sin_addr, addr->host, sizeof(addr->host)); return sendto(*sock, msg, msg_size, 0, (struct sockaddr *)&servaddr, sizeof(servaddr)); } @@ -95,7 +97,7 @@ static ssize_t t_recv(int *sock, void *msg, size_t msg_size, ECPNetAddr *addr) { if (recvlen < 0) return recvlen; if (addr) { - addr->port = ntohs(servaddr.sin_port); + addr->port = servaddr.sin_port; memcpy(addr->host, (void *)&servaddr.sin_addr, sizeof(addr->host)); } return recvlen; |