From all information given so far, I fail to see how this would be an lwip problem.
Did you test your SSL application on a different platform and it worked or what makes you think of an lwip problem instead of an application problem? Don't get me wrong, lwip can have bugs. I just don't see that here and by now, an application problem seems much more likely to me ;-) Simon Am 16. März 2017 13:54:15 MEZ schrieb Noam Weissman <n...@silrd.com>: >Hi Jan, > >No the error I am seeing is MBEDTLS_ERR_NET_RECV_FAILED > >Actually I found something interesting in my code. > >Normally when you call read (fd, buf, len) the underlying TCP will >fetch the amount you need. > >With the mbedtls_ssl_read it is a bit more complicated. As it >internally collects a record to its >own buffer before it returns to the calling part with the requested >block of data. If you read less >than the internal SSL buffer size you may have more data to read from >the internal buffer but NOT >from the socket !!. > >Because in my code, after every mbedtls_ssl_read I called select it >would have failed on the last >fragment even so that the SSL internal buffer still had some data. I >added code to check that >ssl.in_msglen == 0 before I call select again. This solved one problem >but NOT the overall reading >problem. > >If I also added large delays in code so now I am able to read 8 x 1K >chunks before I get again the > MBEDTLS_ERR_NET_RECV_FAILED > >This is a combined problem... misunderstanding how the SSL works and >probably something related >to the LwIP layer. > >If I print LwIP debug messages I have no problems reading the file. ... >delays ??? > >I also changed the call to mbedtls_ssl_set_bio to use the >mbedtls_net_recv_timeout instead of >mbedtls_net_recv function. With this change I am able to read the first >SSL record without problems > >Thanks for all the help so far :-) > > >BR, >Noam. > >-----Original Message----- >From: lwip-users [mailto:lwip-users-bounces+noam=silrd....@nongnu.org] >On Behalf Of Jan Menzel >Sent: Wednesday, March 15, 2017 10:54 PM >To: lwip-users@nongnu.org >Subject: Re: [lwip-users] PolarSSL and mbedTLS > >Hi Noam! > Did you follow the error code through mbedtls's net.c? In my code its >translated into "MBEDTLS_ERR_SSL_WANT_READ" as follows: > >int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len ) [...] > ret = (int) read( fd, buf, len ); > > if( ret < 0 ) > { > if( net_would_block( ctx ) != 0 ) > return( MBEDTLS_ERR_SSL_WANT_READ ); [...] > >with > >static int net_would_block( const mbedtls_net_context *ctx ) [...] > switch( errno ) > { >#if defined EAGAIN > case EAGAIN: >#endif >#if defined EWOULDBLOCK && EWOULDBLOCK != EAGAIN > case EWOULDBLOCK: >#endif > return( 1 ); > } > return( 0 ); >} > > Jan > >On 15.03.2017 20:30, Noam Weissman wrote: >> Hi Simon, >> >> I have triad debugging my code and added : >> #define LWIP_DEBUG LWIP_DBG_ON >> #define SOCKETS_DEBUG LWIP_DBG_ON >> >> Strange that with this switches on I am able to get a file of about >38K but it fails at the last part, always?. >> >> Without the debug prints it never even starts, it fails on first >read. >> >> I have attached my debug printout if that helps. >> >> The text is mixed with my own debug prints, sorry: >> >> File transfer starts at line 438 with: From WssHandleReadData: >> PayloadLen = 38032, DataLen = 1020 >> >> The server sends chunks of 4K, my code reads 1K at a time from the >ssl layer hence the 1024 chunks. >> You can see that PayloadLen reduces by the DataLen chunk ... >> >> The last part received is PayloadLen 1172 DataLen 1024 ... on line >> 1512 >> >> It should read one 1024 block and then 148 bytes and finish... This >> never happens and it fails on last read This is consistent on every >test I did ?. >> >> If I turn off the two debug switches the file transfer never starts, >> actually fails on first read and the lwip_recvfrom returns with -1 >and >> set_errno(EWOULDBLOCK); on line 773 in sockets.c (lwip ver 2.02) >> >> >> Any ideas ? >> >> >> Many thanks, >> Noam. >> >> >> >> -----Original Message----- >> From: lwip-users >[mailto:lwip-users-bounces+noam=silrd....@nongnu.org] >> On Behalf Of Simon Goldschmidt >> Sent: Friday, March 10, 2017 10:36 AM >> To: lwip-users@nongnu.org >> Subject: Re: [lwip-users] PolarSSL and mbedTLS >> >> Noam Weissman wrote: >>> I get a read error inside lwip_recvfrom function. >>> [..] >>> If anyone has any ideas on what more to check or test please >respond. >> >> 1: Get an idea of the error (if recvfrom returns -1, what's the >> corrent errno?) >> 2: Get a debugger and try to find out why recvfrom returns an error. >Without that information, there's no way of knowing where the error is. >> >> Simon >> >> _______________________________________________ >> lwip-users mailing list >> lwip-users@nongnu.org >> https://lists.nongnu.org/mailman/listinfo/lwip-users >> >> >> >> _______________________________________________ >> lwip-users mailing list >> lwip-users@nongnu.org >> https://lists.nongnu.org/mailman/listinfo/lwip-users >> > >_______________________________________________ >lwip-users mailing list >lwip-users@nongnu.org >https://lists.nongnu.org/mailman/listinfo/lwip-users > >_______________________________________________ >lwip-users mailing list >lwip-users@nongnu.org >https://lists.nongnu.org/mailman/listinfo/lwip-users
_______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users