@@ -634,10 +634,7 @@ jboolean handle_tcp(const struct arguments *args,
634634 s -> tcp .sent = 0 ;
635635 s -> tcp .received = 0 ;
636636 s -> tcp .connect_sent = TCP_CONNECT_NOT_SENT ;
637- if (rport == 80 ) {
638- s -> tcp .connect_sent = TCP_CONNECT_ESTABLISHED ;
639- }
640-
637+
641638 if (version == 4 ) {
642639 s -> tcp .saddr .ip4 = (__be32 ) ip4 -> saddr ;
643640 s -> tcp .daddr .ip4 = (__be32 ) ip4 -> daddr ;
@@ -649,7 +646,6 @@ jboolean handle_tcp(const struct arguments *args,
649646 s -> tcp .source = tcphdr -> source ;
650647 s -> tcp .dest = tcphdr -> dest ;
651648 s -> tcp .state = TCP_LISTEN ;
652- // s->tcp.socks5 = SOCKS5_NONE;
653649 s -> tcp .forward = NULL ;
654650 s -> next = NULL ;
655651
@@ -713,36 +709,41 @@ jboolean handle_tcp(const struct arguments *args,
713709 goto free ;
714710 }
715711 } else {
716- if (rport == 443 ) {
712+ if (len > 0 ) {
713+ strcpy (cur -> tcp .hostname , hostname );
714+ } else {
715+ struct sockaddr_in addr4 ;
716+ addr4 .sin_family = AF_INET ;
717+ addr4 .sin_addr .s_addr = (__be32 ) cur -> tcp .daddr .ip4 ;
718+ addr4 .sin_port = cur -> tcp .dest ;
719+ lookup_hostname (& addr4 , hostname , 512 , 1 );
720+ len = strlen (hostname );
717721 if (len > 0 ) {
718722 strcpy (cur -> tcp .hostname , hostname );
719723 } else {
720- struct sockaddr_in addr4 ;
721- addr4 .sin_family = AF_INET ;
722- addr4 .sin_addr .s_addr = (__be32 ) cur -> tcp .daddr .ip4 ;
723- addr4 .sin_port = cur -> tcp .dest ;
724- lookup_hostname (& addr4 , hostname , 512 , 1 );
725- len = strlen (hostname );
726- if (len > 0 ) {
727- strcpy (cur -> tcp .hostname , hostname );
728- }
724+ inet_ntop (cur -> version == 4 ? AF_INET : AF_INET6 ,
725+ cur -> version == 4 ? & cur -> tcp .daddr .ip4 : & cur -> tcp .daddr .ip6 ,
726+ cur -> tcp .hostname , sizeof (cur -> tcp .hostname ));
727+ len = strlen (cur -> tcp .hostname );
729728 }
730- if (cur -> tcp .connect_sent == TCP_CONNECT_NOT_SENT ) {
731- if (len > 0 ) {
732- char buffer [512 ];
733- sprintf (buffer , "CONNECT %s:%d HTTP/1.0\r\n\r\n" , cur -> tcp .hostname , rport );
729+ }
730+
731+ if (cur -> tcp .connect_sent == TCP_CONNECT_NOT_SENT ) {
732+ if (len > 0 ) {
733+ char buffer [512 ];
734+ sprintf (buffer , "CONNECT %s:%d HTTP/1.0\r\n\r\n" , cur -> tcp .hostname , rport );
734735
735- ssize_t sent = send (cur -> socket , buffer , strlen (buffer ), MSG_NOSIGNAL );
736- if (sent < 0 ) {
737- write_rst (args , & cur -> tcp );
738- } else {
739- cur -> tcp .connect_sent = TCP_CONNECT_SENT ;
740- cur -> tcp .state = TCP_LISTEN ;
741- }
736+ ssize_t sent = send (cur -> socket , buffer , strlen (buffer ), MSG_NOSIGNAL );
737+ if (sent < 0 ) {
738+ write_rst (args , & cur -> tcp );
739+ } else {
740+ cur -> tcp .connect_sent = TCP_CONNECT_SENT ;
741+ cur -> tcp .state = TCP_LISTEN ;
742742 }
743743 }
744744 }
745- if (rport == 443 && cur -> tcp .connect_sent != TCP_CONNECT_ESTABLISHED ) {
745+
746+ if (cur -> tcp .connect_sent != TCP_CONNECT_ESTABLISHED ) {
746747 char session [250 ];
747748 sprintf (session ,
748749 "%s %s loc %u rem %u acked %u" ,
@@ -755,7 +756,6 @@ jboolean handle_tcp(const struct arguments *args,
755756 goto free ;
756757 }
757758
758-
759759 char session [250 ];
760760 sprintf (session ,
761761 "%s %s loc %u rem %u acked %u" ,
@@ -970,9 +970,6 @@ int open_tcp_socket(const struct arguments *args,
970970 int version ;
971971
972972 int rport = htons (cur -> dest );
973- if (rport != 80 && rport != 443 ) {
974- redirect = NULL ;
975- }
976973
977974 if (redirect == NULL ) {
978975 version = cur -> version ;
0 commit comments