* fix jsonrpc endpoint path for caller

* make epoll not crash and leak
* correct key name in config
pull/359/head
Jeff Becker 5 years ago
parent 71302ee48b
commit 46b80e465d
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -226,7 +226,7 @@ namespace abyss
m_SendHeaders.emplace("Content-Length", std::to_string(body.size()));
m_SendHeaders.emplace("Accept", "application/json");
std::stringstream request;
request << "POST /rpc HTTP/1.0\r\n";
request << "POST /json_rpc HTTP/1.0\r\n";
for(const auto& item : m_SendHeaders)
request << item.first << ": " << item.second << "\r\n";
request << "\r\n" << body;

@ -555,13 +555,22 @@ namespace llarp
void
connected()
{
// we are connected yeh boi
if(_conn)
sockaddr_storage st;
socklen_t sl;
if (getpeername(fd, (sockaddr*)&st, &sl) == 0)
{
if(_conn->connected && !_calledConnected)
_conn->connected(_conn, &tcp);
// we are connected yeh boi
if(_conn)
{
if(_conn->connected && !_calledConnected)
_conn->connected(_conn, &tcp);
}
_calledConnected = true;
}
else
{
error();
}
_calledConnected = true;
}
void
@ -575,8 +584,9 @@ namespace llarp
}
void
error()
error() override
{
_shouldClose = true;
if(_conn)
{
#ifndef _WIN32
@ -591,6 +601,7 @@ namespace llarp
if(_conn->error)
_conn->error(_conn);
}
}
virtual ssize_t

@ -20,7 +20,7 @@ namespace llarp
if(tcp.read)
tcp.read(&tcp, llarp_buffer_t(buf, amount));
}
else
else if(amount < 0)
{
// error
_shouldClose = true;
@ -123,7 +123,7 @@ namespace llarp
return -1;
b.sz = ret;
udp->recvfrom(udp, addr, ManagedBuffer{b});
return 0;
return ret;
}
int
@ -323,6 +323,7 @@ llarp_epoll_loop::tick(int ms)
epoll_event events[1024];
int result;
result = epoll_wait(epollfd, events, 1024, ms);
bool didIO = false;
if(result > 0)
{
int idx = 0;
@ -331,22 +332,27 @@ llarp_epoll_loop::tick(int ms)
llarp::ev_io* ev = static_cast< llarp::ev_io* >(events[idx].data.ptr);
if(ev)
{
llarp::LogDebug(idx, " of ", result,
llarp::LogDebug(idx, " of ", result, " on ", ev->fd,
" events=", std::to_string(events[idx].events));
if(events[idx].events & EPOLLERR)
{
llarp::LogDebug("epoll error");
ev->error();
}
else
else
{
if(events[idx].events & EPOLLIN)
{
ev->read(readbuf, sizeof(readbuf));
}
// write THEN READ don't revert me
if(events[idx].events & EPOLLOUT)
{
llarp::LogDebug("epoll out");
ev->flush_write();
}
if(events[idx].events & EPOLLIN)
{
llarp::LogDebug("epoll in");
if(ev->read(readbuf, sizeof(readbuf)) > 0)
didIO = true;
}
}
}
++idx;
@ -354,6 +360,9 @@ llarp_epoll_loop::tick(int ms)
}
if(result != -1)
tick_listeners();
/// if we didn't get an io events we sleep to avoid 100% cpu use
if(!didIO)
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
return result;
}

@ -850,7 +850,7 @@ namespace llarp
{
whitelistRouters = IsTrueValue(val);
}
if(StrEq(key, "jsonrpc"))
if(StrEq(key, "jsonrpc") || StrEq(key, "addr"))
{
lokidRPCAddr = val;
}

Loading…
Cancel
Save