Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
af4513a8
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
af4513a8
编写于
9月 25, 2018
作者:
M
Matt Witherspoon
提交者:
GitHub
9月 25, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #5710 from EOSIO/final_keosd_unix_socket_changes
Final keosd unix socket changes
上级
3e7d791a
117fc092
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
28 deletion
+23
-28
programs/cleos/main.cpp
programs/cleos/main.cpp
+22
-27
programs/keosd/main.cpp
programs/keosd/main.cpp
+1
-1
未找到文件。
programs/cleos/main.cpp
浏览文件 @
af4513a8
...
...
@@ -166,7 +166,8 @@ bfs::path determine_home_directory()
}
string
url
=
"http://127.0.0.1:8888/"
;
string
wallet_url
=
"http://127.0.0.1:8900/"
;
string
default_wallet_url
=
"unix://"
+
(
determine_home_directory
()
/
"eosio-wallet"
/
(
string
(
key_store_executable_name
)
+
".sock"
)).
string
();
string
wallet_url
;
//to be set to default_wallet_url in main
bool
no_verify
=
false
;
vector
<
string
>
headers
;
...
...
@@ -768,25 +769,22 @@ struct set_action_permission_subcommand {
};
bool
local_port_used
(
const
string
&
lo_address
,
uint16_t
port
)
{
bool
local_port_used
()
{
using
namespace
boost
::
asio
;
io_service
ios
;
boost
::
asio
::
ip
::
tcp
::
endpoint
endpoint
(
boost
::
asio
::
ip
::
address
::
from_string
(
lo_address
),
port
);
boost
::
asio
::
ip
::
tcp
::
socket
socket
(
ios
);
boost
::
system
::
error_code
ec
=
error
::
would_block
;
//connecting/failing to connect to localhost should be always fast - don't care about timeouts
socket
.
async_connect
(
endpoint
,
[
&
](
const
boost
::
system
::
error_code
&
error
)
{
ec
=
error
;
}
);
do
{
ios
.
run_one
();
}
while
(
ec
==
error
::
would_block
);
local
::
stream_protocol
::
endpoint
endpoint
(
wallet_url
.
substr
(
strlen
(
"unix://"
)));
local
::
stream_protocol
::
socket
socket
(
ios
);
boost
::
system
::
error_code
ec
;
socket
.
connect
(
endpoint
,
ec
);
return
!
ec
;
}
void
try_local_port
(
const
string
&
lo_address
,
uint16_t
port
,
uint32_t
duration
)
{
void
try_local_port
(
uint32_t
duration
)
{
using
namespace
std
::
chrono
;
auto
start_time
=
duration_cast
<
std
::
chrono
::
milliseconds
>
(
system_clock
::
now
().
time_since_epoch
()
).
count
();
while
(
!
local_port_used
(
lo_address
,
port
))
{
while
(
!
local_port_used
())
{
if
(
duration_cast
<
std
::
chrono
::
milliseconds
>
(
system_clock
::
now
().
time_since_epoch
()).
count
()
-
start_time
>
duration
)
{
std
::
cerr
<<
"Unable to connect to keosd, if keosd is running please kill the process and try again.
\n
"
;
throw
connection_exception
(
fc
::
log_messages
{
FC_LOG_MESSAGE
(
error
,
"Unable to connect to keosd"
)});
...
...
@@ -806,16 +804,11 @@ void ensure_keosd_running(CLI::App* app) {
if
(
subapp
->
got_subcommand
(
"listproducers"
)
||
subapp
->
got_subcommand
(
"listbw"
)
||
subapp
->
got_subcommand
(
"bidnameinfo"
))
// system list* do not require wallet
return
;
}
if
(
wallet_url
!=
default_wallet_url
)
return
;
auto
parsed_url
=
parse_url
(
wallet_url
);
auto
resolved_url
=
resolve_url
(
context
,
parsed_url
);
if
(
!
resolved_url
.
is_loopback
)
return
;
for
(
const
auto
&
addr
:
resolved_url
.
resolved_addresses
)
if
(
local_port_used
(
addr
,
resolved_url
.
resolved_port
))
// Hopefully taken by keosd
return
;
if
(
local_port_used
())
return
;
boost
::
filesystem
::
path
binPath
=
boost
::
dll
::
program_location
();
binPath
.
remove_filename
();
...
...
@@ -827,13 +820,15 @@ void ensure_keosd_running(CLI::App* app) {
binPath
.
remove_filename
().
remove_filename
().
append
(
"keosd"
).
append
(
key_store_executable_name
);
}
const
auto
&
lo_address
=
resolved_url
.
resolved_addresses
.
front
();
if
(
boost
::
filesystem
::
exists
(
binPath
))
{
namespace
bp
=
boost
::
process
;
binPath
=
boost
::
filesystem
::
canonical
(
binPath
);
vector
<
std
::
string
>
pargs
;
pargs
.
push_back
(
"--http-server-address="
+
lo_address
+
":"
+
std
::
to_string
(
resolved_url
.
resolved_port
));
pargs
.
push_back
(
"--http-server-address"
);
pargs
.
push_back
(
""
);
pargs
.
push_back
(
"--https-server-address"
);
pargs
.
push_back
(
""
);
::
boost
::
process
::
child
keos
(
binPath
,
pargs
,
bp
::
std_in
.
close
(),
...
...
@@ -842,13 +837,12 @@ void ensure_keosd_running(CLI::App* app) {
if
(
keos
.
running
())
{
std
::
cerr
<<
binPath
<<
" launched"
<<
std
::
endl
;
keos
.
detach
();
try_local_port
(
lo_address
,
resolved_url
.
resolved_port
,
2000
);
try_local_port
(
2000
);
}
else
{
std
::
cerr
<<
"No wallet service listening on "
<<
lo_address
<<
":"
<<
std
::
to_string
(
resolved_url
.
resolved_port
)
<<
". Failed to launch "
<<
binPath
<<
std
::
endl
;
std
::
cerr
<<
"No wallet service listening on "
<<
wallet_url
<<
". Failed to launch "
<<
binPath
<<
std
::
endl
;
}
}
else
{
std
::
cerr
<<
"No wallet service listening on "
<<
lo_address
<<
":"
<<
std
::
to_string
(
resolved_url
.
resolved_port
)
std
::
cerr
<<
"No wallet service listening on "
<<
". Cannot automatically start keosd because keosd was not found."
<<
std
::
endl
;
}
}
...
...
@@ -1745,6 +1739,7 @@ int main( int argc, char** argv ) {
bindtextdomain
(
locale_domain
,
locale_path
);
textdomain
(
locale_domain
);
context
=
eosio
::
client
::
http
::
create_http_context
();
wallet_url
=
default_wallet_url
;
CLI
::
App
app
{
"Command Line Interface to EOSIO Client"
};
app
.
require_subcommand
();
...
...
programs/keosd/main.cpp
浏览文件 @
af4513a8
...
...
@@ -43,7 +43,7 @@ int main(int argc, char** argv)
http_plugin
::
set_defaults
({
.
address_config_prefix
=
""
,
.
default_unix_socket_path
=
keosd
::
config
::
key_store_executable_name
+
".sock"
,
.
default_http_port
=
890
0
.
default_http_port
=
0
});
app
().
register_plugin
<
wallet_api_plugin
>
();
if
(
!
app
().
initialize
<
wallet_plugin
,
wallet_api_plugin
,
http_plugin
>
(
argc
,
argv
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录