From da340891c436875dfe7ff9f9e21d999235562aa7 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sat, 21 Dec 2013 11:52:48 -0800 Subject: [PATCH] Fixing sockets and response. --- src/xenia/core/socket_win.cc | 9 ++++++ src/xenia/debug/protocols/ws/ws_client.cc | 34 ++++++++------------ src/xenia/kernel/xboxkrnl/objects/xmodule.cc | 4 +++ 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/xenia/core/socket_win.cc b/src/xenia/core/socket_win.cc index 10e3fc903..3d999c710 100644 --- a/src/xenia/core/socket_win.cc +++ b/src/xenia/core/socket_win.cc @@ -35,6 +35,15 @@ socket_t xe_socket_create_tcp() { } void xe_socket_close(socket_t socket) { + struct linger so_linger; + so_linger.l_onoff = TRUE; + so_linger.l_linger = 30; + setsockopt( + socket, + SOL_SOCKET, + SO_LINGER, + (const char*)&so_linger, + sizeof so_linger); shutdown(socket, SD_SEND); closesocket(socket); } diff --git a/src/xenia/debug/protocols/ws/ws_client.cc b/src/xenia/debug/protocols/ws/ws_client.cc index 0fdcfbe5f..724253314 100644 --- a/src/xenia/debug/protocols/ws/ws_client.cc +++ b/src/xenia/debug/protocols/ws/ws_client.cc @@ -223,34 +223,28 @@ int WSClient::PerformHandshake() { xesnprintfa(title_id, XECOUNT(title_id), "%.8X", header->execution_info.title_id); - ostringstream response; + ostringstream response_body; if (module) { - response << - "HTTP/1.0 200 OK\r\n" - "Content-Type: application/json\r\n" - "Connection: close\r\n" - "\r\n"; - response << "[{"; - response << + response_body << "[{"; + response_body << "\"name\": \"" << module->name() << "\","; - response << - "\"path\": \"" << module->path() << "\","; - response << + response_body << "\"titleId\": \"" << title_id << "\""; - response << "}]"; - response << - "\r\n" - "\r\n"; + response_body << "}]"; } else { - response << + response_body << + "[]"; + } + size_t content_length = response_body.str().length(); + ostringstream response; + response << "HTTP/1.0 200 OK\r\n" "Content-Type: application/json\r\n" "Connection: close\r\n" - "\r\n" - "[]" - "\r\n" + "Access-Control-Allow-Origin: *\r\n" + "Content-Length: " << content_length << "\r\n" "\r\n"; - } + response << response_body.str(); error_code = WriteResponse(response.str()); if (error_code) { return error_code; diff --git a/src/xenia/kernel/xboxkrnl/objects/xmodule.cc b/src/xenia/kernel/xboxkrnl/objects/xmodule.cc index 20b3b0265..f8a08f90d 100644 --- a/src/xenia/kernel/xboxkrnl/objects/xmodule.cc +++ b/src/xenia/kernel/xboxkrnl/objects/xmodule.cc @@ -35,6 +35,10 @@ XModule::XModule(KernelState* kernel_state, const char* path) : if (slash) { XEIGNORE(xestrcpya(name_, XECOUNT(name_), slash + 1)); } + char* dot = xestrrchra(name_, '.'); + if (dot) { + *dot = 0; + } } XModule::~XModule() {