@@ -254,34 +254,33 @@ static bool fill_addr_and_port(const struct lwan_request *r,
254
254
uint16_t local_port , remote_port ;
255
255
socklen_t len = sizeof (sockaddr );
256
256
const char * local_addr , * remote_addr ;
257
+ int listen_fd ;
257
258
258
259
if (r -> conn -> flags & CONN_TLS ) {
259
- struct sockaddr_in6 * sin6 = (struct sockaddr_in6 * )& sockaddr ;
260
+ listen_fd = t -> tls_listen_fd ;
261
+ add_param (strbuf , "HTTPS" , "on" );
262
+ } else {
263
+ listen_fd = t -> listen_fd ;
264
+ add_param (strbuf , "HTTPS" , "" );
265
+ }
260
266
261
- if (getsockname (t -> tls_listen_fd , (struct sockaddr * )& sockaddr , & len ) <
262
- 0 )
263
- return false;
267
+ if (getsockname (listen_fd , (struct sockaddr * )& sockaddr , & len ) < 0 )
268
+ return false;
264
269
265
- assert (len == sizeof (* sin6 ));
270
+ if (sockaddr .ss_family == AF_INET6 ) {
271
+ struct sockaddr_in6 * sin6 = (struct sockaddr_in6 * )& sockaddr ;
266
272
267
273
local_addr = inet_ntop (AF_INET6 , & sin6 -> sin6_addr , local_addr_buf ,
268
274
sizeof (local_addr_buf ));
269
275
local_port = ntohs (sin6 -> sin6_port );
270
-
271
- add_param (strbuf , "HTTPS" , "on" );
272
- } else {
276
+ } else if (sockaddr .ss_family == AF_INET ) {
273
277
struct sockaddr_in * sin = (struct sockaddr_in * )& sockaddr ;
274
278
275
- if (getsockname (t -> listen_fd , (struct sockaddr * )& sockaddr , & len ) < 0 )
276
- return false;
277
-
278
- assert (len == sizeof (* sin ));
279
-
280
279
local_addr = inet_ntop (AF_INET , & sin -> sin_addr , local_addr_buf ,
281
280
sizeof (local_addr_buf ));
282
281
local_port = ntohs (sin -> sin_port );
283
-
284
- add_param ( strbuf , "HTTPS" , "" ) ;
282
+ } else {
283
+ return false ;
285
284
}
286
285
287
286
remote_addr = lwan_request_get_remote_address_and_port (r , remote_addr_buf ,
0 commit comments