Skip to content

Commit f0eaf10

Browse files
authored
Merge pull request #1846 from private-octopus/fix-observed-endian
Fix bit order of port in observed address frame
2 parents c820e3c + 58f8370 commit f0eaf10

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

picoquic/frames.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -6048,13 +6048,13 @@ uint8_t* picoquic_prepare_observed_address_frame(uint8_t* bytes, const uint8_t*
60486048
struct sockaddr_in6* addr = (struct sockaddr_in6*)&path_x->peer_addr;
60496049
ftype = picoquic_frame_type_observed_address_v6;
60506050
ip_addr = (uint8_t*)&addr->sin6_addr;
6051-
port = addr->sin6_port;
6051+
port = ntohs(addr->sin6_port);
60526052
}
60536053
else {
60546054
struct sockaddr_in* addr = (struct sockaddr_in*)&path_x->peer_addr;
60556055
ftype = picoquic_frame_type_observed_address_v4;
60566056
ip_addr = (uint8_t*)&addr->sin_addr;
6057-
port = addr->sin_port;
6057+
port = ntohs(addr->sin_port);
60586058
}
60596059

60606060
uint8_t *bytes_next = picoquic_format_observed_address_frame(
@@ -6126,14 +6126,14 @@ const uint8_t* picoquic_decode_observed_address_frame(picoquic_cnx_t* cnx, const
61266126
memset(o_addr, 0, sizeof(struct sockaddr_in));
61276127
o_addr->sin_family = AF_INET;
61286128
memcpy(&o_addr->sin_addr, addr, 4);
6129-
o_addr->sin_port = port;
6129+
o_addr->sin_port = htons(port);
61306130
}
61316131
else {
61326132
struct sockaddr_in6* o_addr = (struct sockaddr_in6*)&path_x->observed_addr;
61336133
memset(o_addr, 0, sizeof(struct sockaddr_in6));
61346134
o_addr->sin6_family = AF_INET6;
61356135
memcpy(&o_addr->sin6_addr, addr, 16);
6136-
o_addr->sin6_port = port;
6136+
o_addr->sin6_port = htons(port);
61376137
}
61386138
if (cnx->callback_fn != NULL) {
61396139
(void)cnx->callback_fn(cnx, path_x->unique_path_id, NULL, 0, picoquic_callback_path_address_observed, cnx->callback_ctx, path_x->app_path_ctx);

picoquic/util.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ char const* picoquic_addr_text(const struct sockaddr* addr, char* text, size_t t
609609
addr_text = inet_ntop(AF_INET6,
610610
(const void*)(&((struct sockaddr_in6*)addr)->sin6_addr),
611611
addr_buffer, sizeof(addr_buffer));
612-
if (picoquic_sprintf(text, text_size, NULL, "[%s]:%d", addr_text, ntohs(((struct sockaddr_in6*)addr)->sin6_port)) == 0) {
612+
if (picoquic_sprintf(text, text_size, NULL, "[%s]:%d", addr_text, ((struct sockaddr_in6*)addr)->sin6_port) == 0) {
613613
ret_text = text;
614614
}
615615
default:

0 commit comments

Comments
 (0)