int httpd_recv(int fd, void *buf, size_t n, int flags) { #ifdef CONFIG_ENABLE_HTTPS if (httpd_is_https_active()) return tls_recv(httpd_tls_handle, buf, n); else #endif /* ENABLE_HTTPS */ return recv(fd, buf, n, flags); }
static int io_recv(int bytes, char *buf, int *remain, void *user) { int n; *remain = 0; n = (in_tls) ? tls_recv(bytes, buf, remain, &tls) : tcp_recv(bytes, buf, user); if (n > 0) log_printf(10, "\n<- %c[%d] '%.*s'\n\n", (in_tls) ? '&' : ' ', n, n, buf); return n; }
/** * Receive all data available on a connection and dump it to stdout */ void display_result( int connection, TLSParameters *tls_context ) { int received = 0; static char recv_buf[ BUFFER_SIZE + 1 ]; while ( ( received = tls_recv( connection, recv_buf, BUFFER_SIZE, 0, tls_context ) ) >= 0 ) { recv_buf[ received ] = '\0'; printf( "%s", recv_buf ); } printf( "\n" ); }
IoT_Error_t iot_tls_read(Network *pNetwork, unsigned char *pMsg, size_t len, Timer *timer, size_t *read_len) { int val = -1; int recv_len = 0; fd_set fds; int time_left, error_flag = false, complete_flag = false; FD_ZERO(&fds); FD_SET(pNetwork->my_socket, &fds); setsockopt(pNetwork->my_socket, SOL_SOCKET, SO_RCVTIMEO, (void *)&pNetwork->tlsConnectParams.timeout_ms, sizeof(pNetwork->tlsConnectParams.timeout_ms)); do { if (tls_handle) { val = tls_recv(tls_handle, pMsg + recv_len, len - recv_len); } if (val >= 0) { recv_len += val; } else { error_flag = true; } if (recv_len >= len) { complete_flag = true; } time_left = left_ms(timer); } while (!error_flag && !complete_flag && time_left > 0); *read_len = recv_len; if (0 == *read_len && error_flag) { return NETWORK_SSL_NOTHING_TO_READ; } else if (has_timer_expired(timer) && !complete_flag) { return NETWORK_SSL_READ_TIMEOUT_ERROR; } return AWS_SUCCESS; }