First off, pardon if this was reported or already solved.

I'm trying to set up a local sake APNS server, which comprises nginx
with http/2 config in a docker container plus a silly upstream server
in another container.

The connection is (and must be) http/2 with client cert.

And then I run a command like this:

curl -v \
  -d '{"aps":{"alert":"test","sound":"default"}}' \
  -H "apns-topic:com.yourcompanyname.yourappname" \
  -H "apns-expiration:1" \
  -H "apns-priority:10" \
  --http2 \
  --cert .fake-cert  \
  https://localhost:2197/3/device/blah-blah-token -k

I get a weird endless retry from curl, one cycle of the retry looks like this:

* Connection state changed (MAX_CONCURRENT_STREAMS == 1234567890)!
* REFUSED_STREAM, retrying a fresh connect
* Connection died, retrying a fresh connect
* Closing connection 988
* TLSv1.2 (OUT), TLS alert, close notify (256):
* Issue another request to this URL:
'https://localhost:2197/3/device/blah-blah-token'
* Hostname localhost was found in DNS cache
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 2197 (#989)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* SSL re-using session ID
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS handshake, CERT verify (15):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* old SSL session ID is stale, removing
* SSL connection using TLSv1.2 / ECDHE-ECDSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=localhost
*  start date: Feb 27 04:53:32 2020 GMT
*  expire date: Jan 23 04:53:32 4758 GMT
*  issuer: CN=localhost
*  SSL certificate verify result: self signed certificate (18),
continuing anyway.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f9a6c007400)
> POST /3/device/blah-blah-token HTTP/2
> Host: localhost:2197
> User-Agent: curl/7.64.1
> Accept: */*
> apns-topic:com.yourcompanyname.yourappname
> apns-expiration:1
> apns-priority:10
> Content-Length: 42
> Content-Type: application/x-www-form-urlencoded
>

I don't know why nginx closes the stream, it's weird...
But it's also quite so weird that curl just doesn't give up and tries
again and again and again...
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html

Reply via email to