mirror of
https://github.com/gigablast/open-source-search-engine.git
synced 2024-10-04 12:17:35 +03:00
emergency fixes for out of sockets core and
get proxy request timing out causing spider to hang bug.
This commit is contained in:
parent
487c6e0037
commit
8bb3545b71
@ -59,7 +59,7 @@ bool HttpServer::init ( short port,
|
|||||||
//m_maxOpenSockets = 1000000;
|
//m_maxOpenSockets = 1000000;
|
||||||
|
|
||||||
//well, not infinite
|
//well, not infinite
|
||||||
m_maxOpenSockets = g_conf.m_httpMaxSockets;
|
//m_maxOpenSockets = g_conf.m_httpMaxSockets;
|
||||||
|
|
||||||
m_uncompressedBytes = m_bytesDownloaded = 1;
|
m_uncompressedBytes = m_bytesDownloaded = 1;
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ bool HttpServer::init ( short port,
|
|||||||
getMsgPiece ,
|
getMsgPiece ,
|
||||||
port ,
|
port ,
|
||||||
//&g_conf.m_httpMaxSockets ) ) return false;
|
//&g_conf.m_httpMaxSockets ) ) return false;
|
||||||
&m_maxOpenSockets ) ) return false;
|
&g_conf.m_httpMaxSockets ) ) return false;
|
||||||
//g_conf.m_httpMaxReadBufSize ,
|
//g_conf.m_httpMaxReadBufSize ,
|
||||||
//g_conf.m_httpMaxSendBufSize ) ) return false;
|
//g_conf.m_httpMaxSendBufSize ) ) return false;
|
||||||
// set our secure TcpServer class
|
// set our secure TcpServer class
|
||||||
@ -424,6 +424,8 @@ bool HttpServer::getDoc ( long ip,
|
|||||||
// . callback will be called on completion of transaction
|
// . callback will be called on completion of transaction
|
||||||
// . be sure to free "req/reqSize" in callback() somewhere
|
// . be sure to free "req/reqSize" in callback() somewhere
|
||||||
|
|
||||||
|
// MDW: THIS IS RETURNING TRUE SOMEHOW w/o setting g_errno
|
||||||
|
|
||||||
if ( ! tcp->sendMsg ( ip ,
|
if ( ! tcp->sendMsg ( ip ,
|
||||||
port ,
|
port ,
|
||||||
req ,
|
req ,
|
||||||
@ -440,6 +442,7 @@ bool HttpServer::getDoc ( long ip,
|
|||||||
states[n] = NULL;
|
states[n] = NULL;
|
||||||
callbacks[n] = NULL;
|
callbacks[n] = NULL;
|
||||||
s_numOutgoingSockets--;
|
s_numOutgoingSockets--;
|
||||||
|
log("http: sendmsg returned true!: %s",mstrerror(g_errno));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,7 +787,7 @@ void downloadTheDocForReals2 ( Msg13Request *r ) {
|
|||||||
NULL ,
|
NULL ,
|
||||||
r , // state data
|
r , // state data
|
||||||
gotProxyHostReplyWrapper ,
|
gotProxyHostReplyWrapper ,
|
||||||
10 )){// 10 sec timeout
|
9999999 )){// 9999999 sec timeout
|
||||||
// sanity check
|
// sanity check
|
||||||
if ( ! g_errno ) { char *xx=NULL;*xx=0; }
|
if ( ! g_errno ) { char *xx=NULL;*xx=0; }
|
||||||
// report it
|
// report it
|
||||||
@ -809,7 +809,7 @@ void gotProxyHostReplyWrapper ( void *state , UdpSlot *slot ) {
|
|||||||
if ( g_errno ) {
|
if ( g_errno ) {
|
||||||
// note it
|
// note it
|
||||||
log("sproxy: got proxy request error: %s",mstrerror(g_errno));
|
log("sproxy: got proxy request error: %s",mstrerror(g_errno));
|
||||||
g_udpServer.sendErrorReply(slot,g_errno);
|
g_udpServer.sendErrorReply(r->m_udpSlot,g_errno);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
@ -823,7 +823,7 @@ void gotProxyHostReplyWrapper ( void *state , UdpSlot *slot ) {
|
|||||||
if ( replySize != sizeof(ProxyReply) ) {
|
if ( replySize != sizeof(ProxyReply) ) {
|
||||||
log("sproxy: bad 54 reply size of %li != %li",
|
log("sproxy: bad 54 reply size of %li != %li",
|
||||||
replySize,(long)sizeof(ProxyReply));
|
replySize,(long)sizeof(ProxyReply));
|
||||||
g_udpServer.sendErrorReply(slot,g_errno);
|
g_udpServer.sendErrorReply(r->m_udpSlot,g_errno);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,6 +594,7 @@ bool TcpServer::sendMsg ( long ip ,
|
|||||||
// . adds socket to array for us and sets the fd non-blocking, etc.
|
// . adds socket to array for us and sets the fd non-blocking, etc.
|
||||||
s = getNewSocket ( );
|
s = getNewSocket ( );
|
||||||
// return true if s is NULL and g_errno was set by getNewSocket()
|
// return true if s is NULL and g_errno was set by getNewSocket()
|
||||||
|
// might set g_errno to EOUTOFSOCKETS
|
||||||
if ( ! s ) { mfree ( sendBuf , sendBufSize,"TcpServer"); return true; }
|
if ( ! s ) { mfree ( sendBuf , sendBufSize,"TcpServer"); return true; }
|
||||||
// set up the new TcpSocket for connecting
|
// set up the new TcpSocket for connecting
|
||||||
s->m_state = state;
|
s->m_state = state;
|
||||||
@ -764,7 +765,7 @@ TcpSocket *TcpServer::getNewSocket ( ) {
|
|||||||
long now = getTimeLocal();
|
long now = getTimeLocal();
|
||||||
static long s_last = 0;
|
static long s_last = 0;
|
||||||
static long s_count = 0;
|
static long s_count = 0;
|
||||||
if ( now - s_last < 5 )
|
if ( now - s_last < 5 && s_last )
|
||||||
s_count++;
|
s_count++;
|
||||||
else {
|
else {
|
||||||
log("tcp: Out of sockets. Max sockets = %li. "
|
log("tcp: Out of sockets. Max sockets = %li. "
|
||||||
@ -779,6 +780,8 @@ TcpSocket *TcpServer::getNewSocket ( ) {
|
|||||||
// send email alert
|
// send email alert
|
||||||
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
||||||
"out of sockets on https");
|
"out of sockets on https");
|
||||||
|
// in case sendEmailMsg resets g_errno somehow
|
||||||
|
g_errno = EOUTOFSOCKETS;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -877,7 +880,7 @@ TcpSocket *TcpServer::wrapSocket ( int sd , long niceness , bool isIncoming ) {
|
|||||||
long now = getTimeLocal();
|
long now = getTimeLocal();
|
||||||
static long s_last = 0;
|
static long s_last = 0;
|
||||||
static long s_count = 0;
|
static long s_count = 0;
|
||||||
if ( now - s_last < 5 )
|
if ( now - s_last < 5 && s_last )
|
||||||
s_count++;
|
s_count++;
|
||||||
else {
|
else {
|
||||||
log("tcp: Out of sockets. Max sockets = %li. "
|
log("tcp: Out of sockets. Max sockets = %li. "
|
||||||
@ -892,6 +895,8 @@ TcpSocket *TcpServer::wrapSocket ( int sd , long niceness , bool isIncoming ) {
|
|||||||
// send email alert
|
// send email alert
|
||||||
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
||||||
"out of sockets on https");
|
"out of sockets on https");
|
||||||
|
// in case sendEmailMsg resets g_errno somehow
|
||||||
|
g_errno = EOUTOFSOCKETS;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// sanity check
|
// sanity check
|
||||||
@ -903,6 +908,8 @@ TcpSocket *TcpServer::wrapSocket ( int sd , long niceness , bool isIncoming ) {
|
|||||||
// send email alert
|
// send email alert
|
||||||
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
||||||
"out of sockets on https2");
|
"out of sockets on https2");
|
||||||
|
// in case sendEmailMsg resets g_errno somehow
|
||||||
|
g_errno = EOUTOFSOCKETS;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// alloc a new TcpSocket
|
// alloc a new TcpSocket
|
||||||
@ -922,6 +929,8 @@ TcpSocket *TcpServer::wrapSocket ( int sd , long niceness , bool isIncoming ) {
|
|||||||
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
g_pingServer.sendEmailMsg ( &s_lastTime ,
|
||||||
"out of sockets on https3");
|
"out of sockets on https3");
|
||||||
//sleep(10000);
|
//sleep(10000);
|
||||||
|
// in case sendEmailMsg resets g_errno somehow
|
||||||
|
g_errno = EOUTOFSOCKETS;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// save this i guess
|
// save this i guess
|
||||||
|
Loading…
Reference in New Issue
Block a user