Hello Johnny,

Thank you for the explanation. That's an important remark so I can
continue the evaluation here.

I was thinking that the issue was related to the MQTT library. But, in
fact, there is something wrong with the TCP connection.

I will post here as soon as I have more news.

Best regards,

Flavio

Em dom., 27 de jun. de 2021 às 13:56, Johnny Billquist
<b...@softjar.se> escreveu:
>
> Something is seriously wrong in your first run.
> Maybe a tcpdump would expose something, but basically, tcp_max_wrb_size
> should never be 0, but in your first run it appears to be.
>
> As that is the buffer size to use, you end up with a tcp connection with
> a buffer size of 0, so of course all writes (including send) will return
> with success, but with 0 bytes written, since there wasn't space for
> anything more.
>
> tcp_max_wrb_size should be based on mss, which suggests that mss would
> be zero. But that is rather surprising. Since the mss is exchanged
> between the hosts at tcp connection establishment, it would be very
> interesting to report what mss each side is suggesting.
>
> It might be that one side isn't reporting any mss at all, and then the
> tcp implementation in Nuttx behaves badly. I don't really have time to
> dive into this more right now, but this should give you some pointers
> and ideas to where to look further.
>
>    Johnny
>
> On 2021-06-27 16:34, Flavio Castro Alves Filho wrote:
> > I'm sorry ... I got the same behavior, but the send function now
> > started to work non-blocking.
> >
> > Here is my situation:
> >
> > * I have 2 mqtt brokers (tcp servers)
> >    - one commercial (Tago.io)
> >    - one personal (Mosquitto)
> >
> > After a successful connection in both cases, the next step is to send
> > the mqtt connect message.
> >
> > Below shows the execution trace for the commercial broker.
> >
> > [972934023.720000] [  INFO] psock_vfcntl: sockfd=0x10007a70 cmd=9
> > [972934023.730000] [  INFO] psock_tcp_send (0x1000a9ac):
> > [972934023.730000] [  INFO] 0000  10 42 00 04 4d 51 54 54 04 c2 01 90
> > 00 07 54 65  .B..MQTT......Te
> > [972934023.740000] [  INFO] 0010  73 74 65 47 57 00 07 70 68 69 74 61
> > 67 6f 00 24  steGW..phitago.$
> > [972934023.750000] [  INFO] 0020  30 66 30 62 36 37 33 64 2d 33 64 35
> > 66 2d 34 38  0f0b673d-3d5f-48
> > [972934023.760000] [  INFO] 0030  38 62 2d 62 38 62 36 2d 62 36 35 36
> > 35 66 37 39  8b-b8b6-b6565f79
> > [972934023.770000] [  INFO] 0040  66 32 66 64
> >              f2fd
> > [972934023.780000] [  INFO] tcp_max_wrb_size: tcp_max_wrb_size = 0 for
> > conn 0x20006e78
> > [972934023.780000] [  INFO] psock_tcp_send: new wrb 0x200073fc (non 
> > blocking)
> > [972934023.790000] [  INFO] iob_copyin_internal: iob=0x20004238 len=0 
> > offset=0
> >
> > The send() result is 0. And keeps always in this way.
> >
> > And below we have the traces for the personal broker transmission.
> >
> > [972932455.670000] [  INFO] psock_vfcntl: sockfd=0x10007a70 cmd=9
> > [972932455.670000] [  INFO] psock_tcp_send (0x1000a9ac):
> > [972932455.680000] [  INFO] 0000  10 42 00 04 4d 51 54 54 04 c2 01 90
> > 00 07 54 65  .B..MQTT......Te
> > [972932455.690000] [  INFO] 0010  73 74 65 47 57 00 07 70 68 69 74 61
> > 67 6f 00 24  steGW..phitago.$
> > [972932455.700000] [  INFO] 0020  30 66 30 62 36 37 33 64 2d 33 64 35
> > 66 2d 34 38  0f0b673d-3d5f-48
> > [972932455.710000] [  INFO] 0030  38 62 2d 62 38 62 36 2d 62 36 35 36
> > 35 66 37 39  8b-b8b6-b6565f79
> > [972932455.710000] [  INFO] 0040  66 32 66 64
> >              f2fd
> > [972932455.720000] [  INFO] tcp_max_wrb_size: tcp_max_wrb_size = 2144
> > for conn 0x20006e78
> > [972932455.730000] [  INFO] psock_tcp_send: new wrb 0x200073fc (non 
> > blocking)
> > [972932455.740000] [  INFO] iob_copyin_internal: iob=0x20004238 len=68 
> > offset=0
> > [972932455.750000] [  INFO] iob_copyin_internal: iob=0x20004238
> > avail=0 len=68 next=0
> >
> > In this case, send return a value bigger than 0.
> >
> > Could you please give me any advice to understand what's going on? Or
> > what can I check?
> >
> > The connect() response is 0 in both cases.
> >
> > Using PC-based tools, such as MQTT.Fx, I can connect to the host.
> >
> > Best regards,
> >
> > Flavio
> >
> > Em sáb., 26 de jun. de 2021 às 13:57, Gregory Nutt
> > <spudan...@gmail.com> escreveu:
> >>
> >>
> >>> Is there any chance that the broker didn't like the mqtt connect
> >>> message and shutdown the connection and leaving my device alone ...
> >>> all during send call?
> >> If the peer disconnects, the socket should be marked disconnected and
> >> the send() should fail with an error.
> >
> >
> >
>
> --
> Johnny Billquist                  || "I'm on a bus
>                                    ||  on a psychedelic trip
> email: b...@softjar.se             ||  Reading murder books
> pdp is alive!                     ||  tryin' to stay hip" - B. Idol



-- 
Flavio de Castro Alves Filho

flavio.al...@gmail.com
Twitter: http://twitter.com/#!/fraviofii
LinkedIn profile: www.linkedin.com/in/flaviocastroalves

Reply via email to