mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
.Web: minor error-related fixes in sockets
git-svn-id: svn://ultimatepp.org/upp/trunk@3379 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
d4e208a2e2
commit
6be03cf62e
3 changed files with 11 additions and 8 deletions
|
|
@ -294,7 +294,7 @@ bool HttpServer::DelayedWrite()
|
|||
if((sw.done += count) >= sw.data.GetLength()) {
|
||||
LogTime(NFormat("HttpServer::DelayedWrite(): finished %d (%d left)",
|
||||
sw.socket.GetNumber(), delayed_writes.GetCount() - 1), 2);
|
||||
sw.socket.Block(); // set to blocking mode before close
|
||||
// sw.socket.Block(); // set to blocking mode before close
|
||||
sw.socket.PeekWrite(1000);
|
||||
sw.socket.StopWrite();
|
||||
sw.socket.Close();
|
||||
|
|
@ -304,7 +304,7 @@ bool HttpServer::DelayedWrite()
|
|||
else if(msecs(sw.ticks) >= max_request_time) {
|
||||
LogTime(NFormat("HttpServer::DelayedWrite(): timeout after sending %d out of %d bytes",
|
||||
sw.done, sw.data.GetLength()), 0);
|
||||
sw.socket.Block(); // set to blocking mode before close
|
||||
// sw.socket.Block(); // set to blocking mode before close
|
||||
sw.socket.StopWrite();
|
||||
sw.socket.Close();
|
||||
delayed_writes.Remove(i);
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ ERRINFO(WSASYSCALLFAILURE, "System call failure.")
|
|||
Socket::Data::Data()
|
||||
: socket(INVALID_SOCKET)
|
||||
, is_blocking(true)
|
||||
, is_error(false)
|
||||
//, is_error(false)
|
||||
, is_eof(false)
|
||||
, fake_error(0)
|
||||
{
|
||||
|
|
@ -274,7 +274,7 @@ bool Socket::Data::CloseRaw(int msecs_timeout)
|
|||
{
|
||||
if(socket == INVALID_SOCKET)
|
||||
return false;
|
||||
bool ok = !is_error && Peek(msecs_timeout, true);
|
||||
bool ok = !IsError() && Peek(msecs_timeout, true);
|
||||
SOCKET old_socket = socket;
|
||||
socket = INVALID_SOCKET;
|
||||
if(old_socket != INVALID_SOCKET) {
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public:
|
|||
SOCKET socket;
|
||||
String leftover;
|
||||
bool is_blocking;
|
||||
bool is_error;
|
||||
// bool is_error;
|
||||
bool is_eof;
|
||||
#ifndef NOFAKEERROR
|
||||
int fake_error;
|
||||
|
|
@ -63,12 +63,15 @@ public:
|
|||
friend void AttachSocket(Socket& socket, SOCKET hsocket, bool blocking);
|
||||
};
|
||||
|
||||
Socket() { is_error = false; errorcode = 0; }
|
||||
Socket(One<Data> data) : data(data) {}
|
||||
Socket() { ClearError(); }
|
||||
Socket(One<Data> data) : data(data) { ClearError(); if(data) data->sock = this; }
|
||||
Socket(pick_ Socket& s) : data(s.data) { ClearError(); if(data) data->sock = this; }
|
||||
|
||||
Socket& operator = (pick_ Socket& s) { ClearError(); data = s.data; if(data) data->sock = this; return *this; }
|
||||
|
||||
static void Init();
|
||||
|
||||
void Attach(One<Data> d) { data = d; data->sock = this; }
|
||||
void Attach(One<Data> d) { data = d; data->sock = this; ClearError(); }
|
||||
void Clear() { if(!data.IsPicked() && data) data->sock = NULL; data.Clear(); }
|
||||
|
||||
bool IsOpen() const { return data && data->IsOpen(); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue