I'm running into a slightly weird issue. I'm on Ubuntu Precise 64-bit. I've got a working nginx 1.9.9 with various lua modules installed. I just rolled 1.9.10 though and am having issues.
In some ssl_certificate_by_lua_file code, I'm doing an HTTP request with one of the lua-resty-http modules (specifically the 'liseen' one). In 1.9.9 and earlier, this works just fine (been running in production for a couple of months now). In 1.9.10, the http request fails. The URL in question is an IP address too, so (I'm assuming) the various resolver changes in 1.9.10 aren't coming into play.
I've tried some other lua-resty-http modules just to be safe and they fail too at the same spot. Through copious ngx.log statements, it seems that when any of the resty http modules I've tried call the ngx.socket.tcp function on my 1.9.10 server, the request just fails. On the TCP side, it does a SYN to the server, gets a SYN-ACK back from the server and then the client immediately sends a RST, so the connection is already closed by the time of the SYN-ACK. On the lua side, in 1.9.10, I put logging right after the call to resty.http's 'request' call and it's never reached (but a log line before requiest() does get logged). Nothing in logged to the nginx error log. Strace'ing has told me nothing.
I've just recompiled 1.9.9 so that it's using all the same versions of lua modules, and it still works just fine when it does the http request. Both my 1.9.9 and 1.9.10 installs have openssl 1.0.2e compiled into them (tried 1.0.2f too and that's just fine with 1.9.9 too), in case that makes any difference.
Code and configs are production, so I'm not able to just post them here, but I can provide them privately.
What should I do to debug this further? Both are using the same lua-nginx-module checkout (and same lua-resty-* checkouts), so it's not like the code in 1.9.10 has changed from 1.9.9 (for ngx.socket.tcp at least). I'm sure it's something goofy, but I'm a bit stumped.