Change buffer sizes to support GR-PEACH

Dependencies:   CyaSSL

Dependents:   GR-PEACH_Azure_Speech

Fork of HTTPClient-SSL by MultiTech

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);