1616
1717enum pbpal_resolv_n_connect_result pbpal_resolv_and_connect (pubnub_t * pb )
1818{
19- struct sockaddr addr ;
2019
2120 PUBNUB_ASSERT (pb_valid_ctx_ptr (pb ));
2221 PUBNUB_ASSERT_OPT ((pb -> state == PBS_READY ) || (pb -> state == PBS_WAIT_DNS_SEND ) || (pb -> state == PBS_WAIT_DNS_RCV ));
23-
24- addr .sin_port = htons (HTTP_PORT );
2522
2623#if ESP_PLATFORM
24+ struct sockaddr_in addr ;
25+ addr .sin_port = htons (HTTP_PORT );
26+
2727 PUBNUB_LOG_TRACE ("pbpal_resolv_and_connect: gethostbyname(%s)\n" ,
2828 PUBNUB_ORIGIN_SETTABLE ? pb -> origin : PUBNUB_ORIGIN );
2929
@@ -39,12 +39,23 @@ enum pbpal_resolv_n_connect_result pbpal_resolv_and_connect(pubnub_t *pb)
3939 PUBNUB_LOG_ERROR ("pbpal_resolv_and_connect: no address found!\n" );
4040 return pbpal_resolv_failed_processing ;
4141 }
42+
43+ pb -> pal .socket = socket (AF_INET , SOCK_STREAM , IPPROTO_TCP );
44+ if (pb -> pal .socket == SOCKET_INVALID ) {
45+ return pbpal_connect_resource_failure ;
46+ }
47+ if (connect (pb -> pal .socket , (const struct sockaddr * ) & addr , sizeof addr ) != 0 ) {
48+ closesocket (pb -> pal .socket );
49+ pb -> pal .socket = SOCKET_INVALID ;
50+ return pbpal_connect_failed ;
51+ }
4252#else
53+ struct sockaddr addr ;
54+ addr .sin_port = htons (HTTP_PORT );
4355 addr .sin_addr = gethostbyname (PUBNUB_ORIGIN_SETTABLE ? pb -> origin : PUBNUB_ORIGIN );
4456 if (addr .sin_addr == 0 ) {
4557 return pbpal_resolv_failed_processing ;
4658 }
47- #endif
4859
4960 pb -> pal .socket = socket (AF_INET , SOCK_STREAM , IPPROTO_TCP );
5061 if (pb -> pal .socket == SOCKET_INVALID ) {
@@ -55,6 +66,7 @@ enum pbpal_resolv_n_connect_result pbpal_resolv_and_connect(pubnub_t *pb)
5566 pb -> pal .socket = SOCKET_INVALID ;
5667 return pbpal_connect_failed ;
5768 }
69+ #endif
5870
5971 {
6072 TickType_t tmval = pdMS_TO_TICKS (pb -> transaction_timeout_ms );
0 commit comments