Got modem to work with MedSentry website. Includes minor change to a library file.
Fork of HTTPClient-SSL by
Diff: HTTPClient.cpp
- Revision:
- 34:13920d48893d
- Parent:
- 33:3b2809748a9e
- Child:
- 37:293e8eae4230
--- a/HTTPClient.cpp Wed Dec 31 22:26:17 2014 +0000 +++ b/HTTPClient.cpp Tue Jan 06 15:31:45 2015 +0000 @@ -78,14 +78,16 @@ static int SocketSend(CYASSL* ssl, char *buf, int sz, void *ctx) { int n ; - - wait(0.1) ; + + wait(0.1); n = m_sock->send(buf, sz); if(n > 0) { - wait(0.3) ; - return n ; - } else ERR("SocketSend:%d/%d\n", n, sz); - return n ; + wait(0.3); + return n; + } else { + ERR("SocketSend:%d/%d\n", n, sz); + } + return n; } static void base64enc(char *out, const char *in) { @@ -278,6 +280,9 @@ for(retry=0; retry<MAX_RETRY; retry++) { int ret = m_sock->connect(host, port); if(ret == 0)break ; + if(m_sock->is_connected()) { + m_sock->close(true); + } } if(retry == MAX_RETRY) { m_sock->close(); @@ -314,7 +319,7 @@ } } - DBG("ctx=%x, ssl=%x, ssl->ctx->CBIORecv, CBIOSend=%x, %x\n", + DBG("ctx=%x, ssl=%x, ssl->ctx->CBIORecv, CBIOSend=%x, %x\r\n", ctx, ssl, SocketReceive, SocketSend ) ; if (CyaSSL_connect(ssl) != SSL_SUCCESS) { ERR("SSL_connect failed"); @@ -611,7 +616,7 @@ } cyassl_free() ; - m_sock->close(); + m_sock->close(true); DBG("Completed HTTP transaction"); if(redirect)return HTTP_REDIRECT ; else return HTTP_OK; @@ -677,6 +682,7 @@ } DBG("Read %d bytes", readLen); *pReadLen = readLen; + m_sock->set_blocking(false, m_timeout); return HTTP_OK; } @@ -821,14 +827,20 @@ HTTPResult ret ; char b_auth[(int)((AUTHB_SIZE+3)*4/3+1)] ; char base64buff[AUTHB_SIZE+3] ; - + ret = send("Authorization: Basic ") ; CHECK_CONN_ERR(ret); sprintf(base64buff, "%s:%s", m_basicAuthUser, m_basicAuthPassword) ; DBG("bAuth: %s", base64buff) ; base64enc(b_auth, base64buff) ; - b_auth[strlen(b_auth)+1] = '\0' ; - b_auth[strlen(b_auth)] = '\n' ; + printf("size of b_auth %d, strlen of b_auth %d\r\n", sizeof(b_auth), strlen(b_auth)); + int b_auth_len = strlen(b_auth); + if(b_auth_len + 3 >= sizeof(b_auth)) { //\r\n\0 characters make up the +3 + ERR("The encoded line is larger than the buffer that holds it"); + } + b_auth[b_auth_len + 2] = '\0' ; + b_auth[b_auth_len + 1] = '\n' ; + b_auth[b_auth_len] = '\r' ; DBG("b_auth:%s", b_auth) ; ret = send(b_auth) ; CHECK_CONN_ERR(ret);