Update version of mbed-net-socket
diff --git a/yotta/data/example-tls-client/main.cpp b/yotta/data/example-tls-client/main.cpp
index 970788c..b499b60 100644
--- a/yotta/data/example-tls-client/main.cpp
+++ b/yotta/data/example-tls-client/main.cpp
@@ -34,8 +34,9 @@
#define UNSAFE 0
#include "mbed.h"
-#include <mbed-net-lwip-eth/EthernetInterface.h>
-#include <mbed-net-sockets/TCPStream.h>
+#include "mbed-net-lwip-eth/EthernetInterface.h"
+#include "mbed-net-sockets/TCPStream.h"
+#include "minar/minar.h"
#include "mbedtls/ssl.h"
#include "mbedtls/entropy.h"
@@ -90,6 +91,8 @@
"-----END CERTIFICATE-----\n";
}
+using namespace mbed::Sockets::v0;
+
/**
* \brief HelloHTTPS implements the logic for fetching a file from a webserver
* using a TCP socket and parsing the result.
@@ -194,7 +197,7 @@
/* Connect to the server */
printf("Connecting to %s:%d\r\n", _domain, _port);
/* Resolve the domain name: */
- socket_error_t err = _stream.resolve(_domain, handler_t(this, &HelloHTTPS::onDNS));
+ socket_error_t err = _stream.resolve(_domain, TCPStream::DNSHandler_t(this, &HelloHTTPS::onDNS));
return err;
}
/**
@@ -271,7 +274,7 @@
* Receive callback for mbed TLS
*/
static int ssl_recv(void *ctx, unsigned char *buf, size_t len) {
- mbed::TCPStream *stream = static_cast<mbed::TCPStream *>(ctx);
+ TCPStream *stream = static_cast<TCPStream *>(ctx);
socket_error_t err = stream->recv(buf, &len);
if (err == SOCKET_ERROR_NONE) {
@@ -287,7 +290,7 @@
* Send callback for mbed TLS
*/
static int ssl_send(void *ctx, const unsigned char *buf, size_t len) {
- mbed::TCPStream *stream = static_cast<mbed::TCPStream *>(ctx);
+ TCPStream *stream = static_cast<TCPStream *>(ctx);
socket_error_t err = stream->send(buf, len);
@@ -300,15 +303,20 @@
}
}
+ void onError(Socket *s, socket_error_t err) {
+ (void) s;
+ printf("MBED: Socket Error: %s (%d)\r\n", socket_strerror(err), err);
+ _stream.close();
+ _error = true;
+ minar::Scheduler::stop();
+ }
/**
* On Connect handler
- * Sends the request which was generated in startTest
+ * Starts the TLS handshake
*/
- void onConnect(socket_error_t err) {
- (void) err;
-
- _stream.setOnReadable(handler_t(this, &HelloHTTPS::onReceive));
- _stream.setOnDisconnect(handler_t(this, &HelloHTTPS::onDisconnect));
+ void onConnect(TCPStream *s) {
+ s->setOnReadable(TCPStream::ReadableHandler_t(this, &HelloHTTPS::onReceive));
+ s->setOnDisconnect(TCPStream::DisconnectHandler_t(this, &HelloHTTPS::onDisconnect));
/* Start the handshake, the rest will be done in onReceive() */
int ret = mbedtls_ssl_handshake(&_ssl);
@@ -325,9 +333,7 @@
* On Receive handler
* Parses the response from the server, to check for the HTTPS 200 status code and the expected response ("Hello World!")
*/
- void onReceive(socket_error_t err) {
- (void) err;
-
+ void onReceive(Socket *s) {
if (_error)
return;
@@ -392,41 +398,44 @@
printf("HTTPS: Received message:\r\n\r\n");
printf("%s", _buffer);
_error = !(_got200 && _gothello);
+
+ s->close();
}
/**
* On DNS Handler
* Reads the address returned by DNS, then starts the connect process.
*/
- void onDNS(socket_error_t err) {
- socket_event_t *e = _stream.getEvent();
+ void onDNS(Socket *s, struct socket_addr addr, const char *domain) {
/* Check that the result is a valid DNS response */
- if (socket_addr_is_any(&e->i.d.addr)) {
+ if (socket_addr_is_any(&addr)) {
/* Could not find DNS entry */
- _error = true;
printf("Could not find DNS entry for %s", HTTPS_SERVER_NAME);
- return;
+ onError(s, SOCKET_ERROR_DNS_FAILED);
} else {
/* Start connecting to the remote host */
- _remoteAddr.setAddr(&e->i.d.addr);
- err = _stream.connect(&_remoteAddr, _port, handler_t(this, &HelloHTTPS::onConnect));
+ char buf[16];
+ _remoteAddr.setAddr(&addr);
+ _remoteAddr.fmtIPv4(buf,sizeof(buf));
+ printf("%s address: %s\r\n",domain, buf);
+ socket_error_t err = _stream.connect(_remoteAddr, _port, TCPStream::ConnectHandler_t(this, &HelloHTTPS::onConnect));
if (err != SOCKET_ERROR_NONE) {
- _error = true;
+ onError(s, err);
}
}
}
- void onDisconnect(socket_error_t err) {
- (void) err;
- _disconnected = true;
+ void onDisconnect(TCPStream *s) {
+ s->close();
+ minar::Scheduler::stop();
}
protected:
- mbed::TCPStream _stream; /**< The TCP Socket */
+ TCPStream _stream; /**< The TCP Socket */
const char *_domain; /**< The domain name of the HTTPS server */
const uint16_t _port; /**< The HTTPS server port */
char _buffer[RECV_BUFFER_SIZE]; /**< The response buffer */
size_t _bpos; /**< The current offset in the response buffer */
- mbed::SocketAddr _remoteAddr; /**< The remote address */
+ SocketAddr _remoteAddr; /**< The remote address */
volatile bool _got200; /**< Status flag for HTTPS 200 */
volatile bool _gothello; /**< Status flag for finding the test string */
volatile bool _error; /**< Status flag for an error */