Hi Tim, Yes, I think send() is the preferred form to work with sockets because you can have fine control, i.e. passing flags at forth argument (MSG_DONTWAIT, etc).
If you suspect that the bug was caused by some recent modification, try to find a supported board that was used to test thttpd in the past and test an old NuttX release with it. This is the approach I use to double check if something is broken in the mainline. BR, Alan On Fri, Jun 27, 2025 at 3:39 PM Tim Hardisty <timhardist...@gmail.com> wrote: > Is it as "simple" as thttpd should do: > > nwritten= send(sock_fd, buffer, totalbytesread, 0); > > rather than the generic: > > nwritten= write(sock_fd, buffer, nbytes); > > On 27/06/2025 18:40, Tim Hardisty wrote: > > Trying to get thttpd's CGI handling working and have found that the > > dup(2) calls of stdin and stdout return a file descriptor that's > > already been allocated to the NET socket (via thttpd I think). > > > > That isn't right is it? > > > > I am not sure if it's a side effect of something that thttpd does > > (that might have been OK in the past but is now not right) or a NuttX > > bug, of a missing Kconfig setting that relates to this. > > > > The result is that the ultimate copying of buffered html that should > > be written via the socket FD gets rejected as the FD doesn't have WR > > access (and is now the wrong FD anyway!). > > > > Perhaps there's been a change in the way NuttX deals with all of this > > that didn't get sorted in thttpd? > >