11
11
extern " C"
12
12
{
13
13
void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onOpen (JNIEnv*, jobject);
14
- void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv*, jobject);
14
+ void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv*, jobject, jint );
15
15
void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onClose (JNIEnv*, jobject, jint);
16
16
void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onMessage (JNIEnv*, jobject, jstring);
17
17
void JNICALL Java_com_xbox_httpclient_HttpClientWebSocket_onBinaryMessage (JNIEnv*, jobject, jobject);
@@ -369,7 +369,7 @@ struct HttpClientWebSocket
369
369
struct okhttp_websocket_impl : hc_websocket_impl, std::enable_shared_from_this<okhttp_websocket_impl>
370
370
{
371
371
friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onOpen (JNIEnv*, jobject);
372
- friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv*, jobject);
372
+ friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv*, jobject, jint );
373
373
friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onClose (JNIEnv*, jobject, jint);
374
374
friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onMessage (JNIEnv*, jobject, jstring);
375
375
friend void JNICALL ::Java_com_xbox_httpclient_HttpClientWebSocket_onBinaryMessage (JNIEnv*, jobject, jobject);
@@ -451,7 +451,14 @@ struct okhttp_websocket_impl : hc_websocket_impl, std::enable_shared_from_this<o
451
451
452
452
WebSocketCompletionResult& result = context->completionResult ;
453
453
result.websocket = sharedThis->GetHandle ();
454
- result.errorCode = E_FAIL;
454
+ if (sharedThis->m_connectStatusCode != -1 )
455
+ {
456
+ result.errorCode = MAKE_HRESULT (1 , FACILITY_HTTP, sharedThis->m_connectStatusCode );
457
+ }
458
+ else
459
+ {
460
+ result.errorCode = E_FAIL;
461
+ }
455
462
XAsyncComplete (data->async , S_OK, sizeof (WebSocketCompletionResult));
456
463
return S_OK;
457
464
}
@@ -746,15 +753,17 @@ struct okhttp_websocket_impl : hc_websocket_impl, std::enable_shared_from_this<o
746
753
if (m_socketState == State::Connecting)
747
754
{
748
755
m_socketState = State::ConnectSucceeded;
756
+ m_connectStatusCode = 101 ;
749
757
}
750
758
}
751
759
752
- void OnFailure (UniqueLock lock)
760
+ void OnFailure (UniqueLock lock, jint statusCode )
753
761
{
754
762
switch (m_socketState)
755
763
{
756
764
case State::Connecting:
757
765
m_socketState = State::ConnectFailed;
766
+ m_connectStatusCode = statusCode;
758
767
break ;
759
768
case State::Connected:
760
769
OnClose (std::move (lock), HCWebSocketCloseStatus::AbnormalClose);
@@ -830,6 +839,7 @@ struct okhttp_websocket_impl : hc_websocket_impl, std::enable_shared_from_this<o
830
839
}
831
840
private:
832
841
State m_socketState = State::Disconnected;
842
+ int m_connectStatusCode = -1 ;
833
843
mutable std::mutex m_socketMutex;
834
844
835
845
const HCWebsocketHandle m_handle;
@@ -945,7 +955,7 @@ Java_com_xbox_httpclient_HttpClientWebSocket_onOpen(JNIEnv *env, jobject thiz)
945
955
}
946
956
947
957
JNIEXPORT void JNICALL
948
- Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv *env, jobject thiz)
958
+ Java_com_xbox_httpclient_HttpClientWebSocket_onFailure (JNIEnv *env, jobject thiz, jint statusCode )
949
959
{
950
960
using namespace xbox ::httpclient;
951
961
@@ -955,7 +965,7 @@ Java_com_xbox_httpclient_HttpClientWebSocket_onFailure(JNIEnv *env, jobject thiz
955
965
return ;
956
966
}
957
967
958
- owner->OnFailure (owner->Lock ());
968
+ owner->OnFailure (owner->Lock (), statusCode );
959
969
}
960
970
961
971
JNIEXPORT void JNICALL
0 commit comments