Beispiel #1
0
void sslConnect(SSLSocket *socket,
                const HostAddress *address,
                uint64_t usTimeout,
                sslCb callback,
                void *arg)
{
  SSL_set_connect_state(socket->ssl);
  
  SSLOp *newOp = allocSSLOp(socket, callback, arg, 0, 0, afNone);
  newOp->type = sslOpConnect;
  newOp->state = sslStConnecting;
  
  if (!socket->current) {
    socket->current = newOp;
    asyncConnect(socket->object, address, usTimeout, connectProc, newOp);    
  } else {
    newOp->address = *address;
    newOp->usTimeout = usTimeout;
    socket->current->next = newOp;
  }
}
Beispiel #2
0
static void finishSSLOp(SSLOp *Op, AsyncOpStatus status)
{
  SSLOp *current = Op->next;
  if (Op->type != sslOpWrite)
    Op->info.socket->current = current;
 
  Op->info.status = status;
  if (Op->info.callback)
    Op->info.callback(&Op->info);
  releaseObject(Op->info.socket->base, Op, sslPoolId);
  if (current && Op->type != sslOpWrite) {
    SSLSocket *S = current->info.socket;
    switch (current->type) {
      case sslOpConnect :
        asyncConnect(S->object, &current->address, current->usTimeout, connectProc, current);
        break;
      case sslOpRead :
        asyncRead(S->object, S->sslReadBuffer, S->sslReadBufferSize, afNone, current->usTimeout, readProc, current);
        break;
    }
  }
}
/**
 * calles to init the Websockets server
 */
void WebSocketsClient::begin(const char *host, uint16_t port, const char * url, const char * protocol) {
    _host = host;
    _port = port;
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
    _fingerprint = "";
#endif

    _client.num = 0;
    _client.status = WSC_NOT_CONNECTED;
    _client.tcp = NULL;
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
    _client.isSSL = false;
    _client.ssl = NULL;
#endif
    _client.cUrl = url;
    _client.cCode = 0;
    _client.cIsUpgrade = false;
    _client.cIsWebsocket = true;
    _client.cKey = "";
    _client.cAccept = "";
    _client.cProtocol = protocol;
    _client.cExtensions = "";
    _client.cVersion = 0;
    _client.base64Authorization = "";
    _client.plainAuthorization = "";

#ifdef ESP8266
    randomSeed(RANDOM_REG32);
#else
    // todo find better seed
    randomSeed(millis());
#endif
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
    asyncConnect();
#endif
}