diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index 838ce229b1a30b85ed6736b4cf372f4a7ba6d3c5..0d733c34a33de9634884dd0470aceef95bdf23a6 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -1701,12 +1701,19 @@ static JSBool js_socket_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict nb=1; setsockopt(p->sock,IPPROTO_TCP,TCP_NODELAY,(char*)&nb,sizeof(nb)); if((ret=do_cryptAttribute(p->session, CRYPT_SESSINFO_NETWORKSOCKET, p->sock))==CRYPT_OK) { -// if((ret=do_cryptAttribute(p->session, CRYPT_SESSINFO_VERSION, 0))==CRYPT_OK) { + // Reduced compliance checking... required for acme-staging-v02.api.letsencrypt.org + do_cryptAttribute(p->session, CRYPT_OPTION_CERT_COMPLIANCELEVEL, CRYPT_COMPLIANCELEVEL_REDUCED); +// if((ret=do_cryptAttribute(p->session, CRYPT_SESSINFO_VERSION, 3))==CRYPT_OK) { if((ret=do_cryptAttributeString(p->session, CRYPT_SESSINFO_SERVER_NAME, p->hostname, strlen(p->hostname)))==CRYPT_OK) { if((ret=do_cryptAttribute(p->session, CRYPT_SESSINFO_ACTIVE, 1))!=CRYPT_OK) { + char *estr = get_crypt_error(p->session); + lprintf(LOG_ERR, "Error setting session active: %s\n", estr); + free_crypt_attrstr(estr); cryptDestroySession(p->session); p->session=-1; ioctlsocket(p->sock,FIONBIO,(ulong*)&(p->nonblocking)); + closesocket(p->sock); + p->sock = INVALID_SOCKET; } } // } @@ -1715,6 +1722,8 @@ static JSBool js_socket_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict cryptDestroySession(p->session); p->session=-1; ioctlsocket(p->sock,FIONBIO,(ulong*)&(p->nonblocking)); + closesocket(p->sock); + p->sock = INVALID_SOCKET; } } else lprintf(LOG_ERR,"cryptCreateSession() Error %d",ret); @@ -1726,6 +1735,8 @@ static JSBool js_socket_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict cryptDestroySession(p->session); p->session=-1; ioctlsocket(p->sock,FIONBIO,(ulong*)&(p->nonblocking)); + closesocket(p->sock); + p->sock = INVALID_SOCKET; } } JS_RESUMEREQUEST(cx, rc);