Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lxc
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
lxc
Commits
b1a22e3a
Commit
b1a22e3a
authored
Nov 26, 2016
by
Christian Brauner
Committed by
Stéphane Graber
Nov 30, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commands: improve logging
Signed-off-by:
Christian Brauner
<
christian.brauner@ubuntu.com
>
parent
492ee659
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
46 deletions
+44
-46
commands.c
src/lxc/commands.c
+44
-46
No files found.
src/lxc/commands.c
View file @
b1a22e3a
...
@@ -168,8 +168,8 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -168,8 +168,8 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
ret
=
lxc_abstract_unix_recv_fd
(
sock
,
&
rspfd
,
rsp
,
sizeof
(
*
rsp
));
ret
=
lxc_abstract_unix_recv_fd
(
sock
,
&
rspfd
,
rsp
,
sizeof
(
*
rsp
));
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
WARN
(
"
command %s failed to receive response
"
,
WARN
(
"
Command %s failed to receive response: %s.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
)
,
strerror
(
errno
)
);
return
-
1
;
return
-
1
;
}
}
...
@@ -184,7 +184,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -184,7 +184,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
rspdata
=
malloc
(
sizeof
(
*
rspdata
));
rspdata
=
malloc
(
sizeof
(
*
rspdata
));
if
(
!
rspdata
)
{
if
(
!
rspdata
)
{
ERROR
(
"
command %s couldn't allocate response buffer
"
,
ERROR
(
"
Command %s couldn't allocate response buffer.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
));
return
-
1
;
return
-
1
;
}
}
...
@@ -196,7 +196,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -196,7 +196,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
if
(
rsp
->
datalen
==
0
)
if
(
rsp
->
datalen
==
0
)
return
ret
;
return
ret
;
if
(
rsp
->
datalen
>
LXC_CMD_DATA_MAX
)
{
if
(
rsp
->
datalen
>
LXC_CMD_DATA_MAX
)
{
ERROR
(
"
command %s response data %d too long
"
,
ERROR
(
"
Command %s response data %d too long.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
),
rsp
->
datalen
);
lxc_cmd_str
(
cmd
->
req
.
cmd
),
rsp
->
datalen
);
errno
=
EFBIG
;
errno
=
EFBIG
;
return
-
1
;
return
-
1
;
...
@@ -204,14 +204,14 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -204,14 +204,14 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
rsp
->
data
=
malloc
(
rsp
->
datalen
);
rsp
->
data
=
malloc
(
rsp
->
datalen
);
if
(
!
rsp
->
data
)
{
if
(
!
rsp
->
data
)
{
ERROR
(
"
command %s unable to allocate response buffer
"
,
ERROR
(
"
Command %s was unable to allocate response buffer.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
));
return
-
1
;
return
-
1
;
}
}
ret
=
recv
(
sock
,
rsp
->
data
,
rsp
->
datalen
,
0
);
ret
=
recv
(
sock
,
rsp
->
data
,
rsp
->
datalen
,
0
);
if
(
ret
!=
rsp
->
datalen
)
{
if
(
ret
!=
rsp
->
datalen
)
{
ERROR
(
"
command %s failed to receive response data
"
,
ERROR
(
"
Command %s failed to receive response data: %s.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
)
,
strerror
(
errno
)
);
if
(
ret
>=
0
)
if
(
ret
>=
0
)
ret
=
-
1
;
ret
=
-
1
;
}
}
...
@@ -233,7 +233,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
...
@@ -233,7 +233,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
ret
=
send
(
fd
,
rsp
,
sizeof
(
*
rsp
),
0
);
ret
=
send
(
fd
,
rsp
,
sizeof
(
*
rsp
),
0
);
if
(
ret
!=
sizeof
(
*
rsp
))
{
if
(
ret
!=
sizeof
(
*
rsp
))
{
ERROR
(
"
failed to send command response %d %s
"
,
ret
,
ERROR
(
"
Failed to send command response %d: %s.
"
,
ret
,
strerror
(
errno
));
strerror
(
errno
));
return
-
1
;
return
-
1
;
}
}
...
@@ -241,8 +241,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
...
@@ -241,8 +241,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
if
(
rsp
->
datalen
>
0
)
{
if
(
rsp
->
datalen
>
0
)
{
ret
=
send
(
fd
,
rsp
->
data
,
rsp
->
datalen
,
0
);
ret
=
send
(
fd
,
rsp
->
data
,
rsp
->
datalen
,
0
);
if
(
ret
!=
rsp
->
datalen
)
{
if
(
ret
!=
rsp
->
datalen
)
{
WARN
(
"
failed to send command response data %d %s"
,
ret
,
WARN
(
"
Failed to send command response data %d: %s."
,
strerror
(
errno
));
ret
,
strerror
(
errno
));
return
-
1
;
return
-
1
;
}
}
}
}
...
@@ -293,7 +293,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
...
@@ -293,7 +293,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if
(
errno
==
ECONNREFUSED
)
if
(
errno
==
ECONNREFUSED
)
*
stopped
=
1
;
*
stopped
=
1
;
else
else
SYSERROR
(
"
command %s failed to connect to '@%s'
"
,
SYSERROR
(
"
Command %s failed to connect to
\"
@%s
\"
.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
);
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
);
return
-
1
;
return
-
1
;
}
}
...
@@ -302,7 +302,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
...
@@ -302,7 +302,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if
(
ret
!=
sizeof
(
cmd
->
req
))
{
if
(
ret
!=
sizeof
(
cmd
->
req
))
{
if
(
errno
==
EPIPE
)
if
(
errno
==
EPIPE
)
goto
epipe
;
goto
epipe
;
SYSERROR
(
"
command %s failed to send req to '@%s' %d
"
,
SYSERROR
(
"
Command %s failed to send req to
\"
@%s
\"
%d.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
,
ret
);
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
,
ret
);
if
(
ret
>=
0
)
if
(
ret
>=
0
)
ret
=
-
1
;
ret
=
-
1
;
...
@@ -314,7 +314,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
...
@@ -314,7 +314,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if
(
ret
!=
cmd
->
req
.
datalen
)
{
if
(
ret
!=
cmd
->
req
.
datalen
)
{
if
(
errno
==
EPIPE
)
if
(
errno
==
EPIPE
)
goto
epipe
;
goto
epipe
;
SYSERROR
(
"
command %s failed to send request data to '@%s' %d
"
,
SYSERROR
(
"
Command %s failed to send request data to
\"
@%s
\"
%d.
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
,
ret
);
lxc_cmd_str
(
cmd
->
req
.
cmd
),
offset
,
ret
);
if
(
ret
>=
0
)
if
(
ret
>=
0
)
ret
=
-
1
;
ret
=
-
1
;
...
@@ -458,14 +458,13 @@ char *lxc_cmd_get_cgroup_path(const char *name, const char *lxcpath,
...
@@ -458,14 +458,13 @@ char *lxc_cmd_get_cgroup_path(const char *name, const char *lxcpath,
return
NULL
;
return
NULL
;
if
(
!
ret
)
{
if
(
!
ret
)
{
WARN
(
"
'%s' has stopped before sending its state
"
,
name
);
WARN
(
"
Container
\"
%s
\"
has stopped before sending its state.
"
,
name
);
return
NULL
;
return
NULL
;
}
}
if
(
cmd
.
rsp
.
ret
<
0
||
cmd
.
rsp
.
datalen
<
0
)
{
if
(
cmd
.
rsp
.
ret
<
0
||
cmd
.
rsp
.
datalen
<
0
)
{
ERROR
(
"command %s failed for '%s': %s"
,
ERROR
(
"Command %s failed for container
\"
%s
\"
: %s."
,
lxc_cmd_str
(
cmd
.
req
.
cmd
),
name
,
lxc_cmd_str
(
cmd
.
req
.
cmd
),
name
,
strerror
(
-
cmd
.
rsp
.
ret
));
strerror
(
-
cmd
.
rsp
.
ret
));
return
NULL
;
return
NULL
;
}
}
...
@@ -571,11 +570,11 @@ lxc_state_t lxc_cmd_get_state(const char *name, const char *lxcpath)
...
@@ -571,11 +570,11 @@ lxc_state_t lxc_cmd_get_state(const char *name, const char *lxcpath)
return
-
1
;
return
-
1
;
if
(
!
ret
)
{
if
(
!
ret
)
{
WARN
(
"
'%s' has stopped before sending its state
"
,
name
);
WARN
(
"
Container
\"
%s
\"
has stopped before sending its state.
"
,
name
);
return
-
1
;
return
-
1
;
}
}
DEBUG
(
"
'%s' is in '%s' state
"
,
name
,
DEBUG
(
"
Container
\"
%s
\"
is in
\"
%s
\"
state.
"
,
name
,
lxc_state2str
(
PTR_TO_INT
(
cmd
.
rsp
.
data
)));
lxc_state2str
(
PTR_TO_INT
(
cmd
.
rsp
.
data
)));
return
PTR_TO_INT
(
cmd
.
rsp
.
data
);
return
PTR_TO_INT
(
cmd
.
rsp
.
data
);
}
}
...
@@ -607,7 +606,7 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
...
@@ -607,7 +606,7 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
ret
=
lxc_cmd
(
name
,
&
cmd
,
&
stopped
,
lxcpath
,
NULL
);
ret
=
lxc_cmd
(
name
,
&
cmd
,
&
stopped
,
lxcpath
,
NULL
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
if
(
stopped
)
{
if
(
stopped
)
{
INFO
(
"
'%s' is already stopped
"
,
name
);
INFO
(
"
Container
\"
%s
\"
is already stopped.
"
,
name
);
return
0
;
return
0
;
}
}
return
-
1
;
return
-
1
;
...
@@ -617,11 +616,12 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
...
@@ -617,11 +616,12 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
* closed
* closed
*/
*/
if
(
ret
>
0
)
{
if
(
ret
>
0
)
{
ERROR
(
"failed to stop '%s': %s"
,
name
,
strerror
(
-
cmd
.
rsp
.
ret
));
ERROR
(
"Failed to stop container
\"
%s
\"
: %s."
,
name
,
strerror
(
-
cmd
.
rsp
.
ret
));
return
-
1
;
return
-
1
;
}
}
INFO
(
"
'%s' has stopped
"
,
name
);
INFO
(
"
Container
\"
%s
\"
has stopped.
"
,
name
);
return
0
;
return
0
;
}
}
...
@@ -643,7 +643,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req,
...
@@ -643,7 +643,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req,
*/
*/
if
(
cgroup_unfreeze
(
handler
))
if
(
cgroup_unfreeze
(
handler
))
return
0
;
return
0
;
ERROR
(
"Failed to unfreeze
%s:%s"
,
handler
->
lxcpath
,
handler
->
name
);
ERROR
(
"Failed to unfreeze
container
\"
%s
\"
."
,
handler
->
name
);
rsp
.
ret
=
-
1
;
rsp
.
ret
=
-
1
;
}
}
...
@@ -705,27 +705,27 @@ int lxc_cmd_console(const char *name, int *ttynum, int *fd, const char *lxcpath)
...
@@ -705,27 +705,27 @@ int lxc_cmd_console(const char *name, int *ttynum, int *fd, const char *lxcpath)
return
ret
;
return
ret
;
if
(
cmd
.
rsp
.
ret
<
0
)
{
if
(
cmd
.
rsp
.
ret
<
0
)
{
ERROR
(
"
console access denied: %s
"
,
strerror
(
-
cmd
.
rsp
.
ret
));
ERROR
(
"
Console access denied: %s.
"
,
strerror
(
-
cmd
.
rsp
.
ret
));
ret
=
-
1
;
ret
=
-
1
;
goto
out
;
goto
out
;
}
}
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
ERROR
(
"
console %d invalid,busy or all consoles busy
"
,
*
ttynum
);
ERROR
(
"
Console %d invalid, busy or all consoles busy.
"
,
*
ttynum
);
ret
=
-
1
;
ret
=
-
1
;
goto
out
;
goto
out
;
}
}
rspdata
=
cmd
.
rsp
.
data
;
rspdata
=
cmd
.
rsp
.
data
;
if
(
rspdata
->
masterfd
<
0
)
{
if
(
rspdata
->
masterfd
<
0
)
{
ERROR
(
"
unable to allocate fd for tty %d
"
,
rspdata
->
ttynum
);
ERROR
(
"
Unable to allocate fd for tty %d.
"
,
rspdata
->
ttynum
);
goto
out
;
goto
out
;
}
}
ret
=
cmd
.
rsp
.
ret
;
/* sock fd */
ret
=
cmd
.
rsp
.
ret
;
/* sock fd */
*
fd
=
rspdata
->
masterfd
;
*
fd
=
rspdata
->
masterfd
;
*
ttynum
=
rspdata
->
ttynum
;
*
ttynum
=
rspdata
->
ttynum
;
INFO
(
"tty %d allocated fd %d sock %d"
,
rspdata
->
ttynum
,
*
fd
,
ret
);
INFO
(
"tty %d allocated fd %d sock %d
.
"
,
rspdata
->
ttynum
,
*
fd
,
ret
);
out:
out:
free
(
cmd
.
rsp
.
data
);
free
(
cmd
.
rsp
.
data
);
return
ret
;
return
ret
;
...
@@ -745,7 +745,7 @@ static int lxc_cmd_console_callback(int fd, struct lxc_cmd_req *req,
...
@@ -745,7 +745,7 @@ static int lxc_cmd_console_callback(int fd, struct lxc_cmd_req *req,
memset
(
&
rsp
,
0
,
sizeof
(
rsp
));
memset
(
&
rsp
,
0
,
sizeof
(
rsp
));
rsp
.
data
=
INT_TO_PTR
(
ttynum
);
rsp
.
data
=
INT_TO_PTR
(
ttynum
);
if
(
lxc_abstract_unix_send_fd
(
fd
,
masterfd
,
&
rsp
,
sizeof
(
rsp
))
<
0
)
{
if
(
lxc_abstract_unix_send_fd
(
fd
,
masterfd
,
&
rsp
,
sizeof
(
rsp
))
<
0
)
{
ERROR
(
"
failed to send tty to client
"
);
ERROR
(
"
Failed to send tty to client.
"
);
lxc_console_free
(
handler
->
conf
,
fd
);
lxc_console_free
(
handler
->
conf
,
fd
);
goto
out_close
;
goto
out_close
;
}
}
...
@@ -854,7 +854,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
...
@@ -854,7 +854,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
};
};
if
(
req
->
cmd
>=
LXC_CMD_MAX
)
{
if
(
req
->
cmd
>=
LXC_CMD_MAX
)
{
ERROR
(
"
bad cmd %d received
"
,
req
->
cmd
);
ERROR
(
"
Undefined command id %d received.
"
,
req
->
cmd
);
return
-
1
;
return
-
1
;
}
}
return
cb
[
req
->
cmd
](
fd
,
req
,
handler
);
return
cb
[
req
->
cmd
](
fd
,
req
,
handler
);
...
@@ -885,23 +885,23 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
...
@@ -885,23 +885,23 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
}
}
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"
failed to receive data on command socket
"
);
SYSERROR
(
"
Failed to receive data on command socket.
"
);
goto
out_close
;
goto
out_close
;
}
}
if
(
!
ret
)
{
if
(
!
ret
)
{
DEBUG
(
"
peer has disconnected
"
);
DEBUG
(
"
Peer has disconnected.
"
);
goto
out_close
;
goto
out_close
;
}
}
if
(
ret
!=
sizeof
(
req
))
{
if
(
ret
!=
sizeof
(
req
))
{
WARN
(
"
partial request, ignored
"
);
WARN
(
"
Failed to receive full command request. Ignoring request.
"
);
ret
=
-
1
;
ret
=
-
1
;
goto
out_close
;
goto
out_close
;
}
}
if
(
req
.
datalen
>
LXC_CMD_DATA_MAX
)
{
if
(
req
.
datalen
>
LXC_CMD_DATA_MAX
)
{
ERROR
(
"
cmd data length %d too large
"
,
req
.
datalen
);
ERROR
(
"
Received command data length %d is too large.
"
,
req
.
datalen
);
ret
=
-
1
;
ret
=
-
1
;
goto
out_close
;
goto
out_close
;
}
}
...
@@ -912,7 +912,7 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
...
@@ -912,7 +912,7 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
reqdata
=
alloca
(
req
.
datalen
);
reqdata
=
alloca
(
req
.
datalen
);
ret
=
recv
(
fd
,
reqdata
,
req
.
datalen
,
0
);
ret
=
recv
(
fd
,
reqdata
,
req
.
datalen
,
0
);
if
(
ret
!=
req
.
datalen
)
{
if
(
ret
!=
req
.
datalen
)
{
WARN
(
"
partial request, ignored
"
);
WARN
(
"
Failed to receive full command request. Ignoring request.
"
);
ret
=
-
1
;
ret
=
-
1
;
goto
out_close
;
goto
out_close
;
}
}
...
@@ -940,24 +940,24 @@ static int lxc_cmd_accept(int fd, uint32_t events, void *data,
...
@@ -940,24 +940,24 @@ static int lxc_cmd_accept(int fd, uint32_t events, void *data,
connection
=
accept
(
fd
,
NULL
,
0
);
connection
=
accept
(
fd
,
NULL
,
0
);
if
(
connection
<
0
)
{
if
(
connection
<
0
)
{
SYSERROR
(
"
failed to accept connection
"
);
SYSERROR
(
"
Failed to accept connection to run command.
"
);
return
-
1
;
return
-
1
;
}
}
if
(
fcntl
(
connection
,
F_SETFD
,
FD_CLOEXEC
))
{
if
(
fcntl
(
connection
,
F_SETFD
,
FD_CLOEXEC
))
{
SYSERROR
(
"
failed to set close-on-exec on incoming connection
"
);
SYSERROR
(
"
Failed to set close-on-exec on incoming command connection.
"
);
goto
out_close
;
goto
out_close
;
}
}
if
(
setsockopt
(
connection
,
SOL_SOCKET
,
if
(
setsockopt
(
connection
,
SOL_SOCKET
,
SO_PASSCRED
,
&
opt
,
sizeof
(
opt
)))
{
SO_PASSCRED
,
&
opt
,
sizeof
(
opt
)))
{
SYSERROR
(
"
failed to enable credential on socket
"
);
SYSERROR
(
"
Failed to enable necessary credentials on command socket.
"
);
goto
out_close
;
goto
out_close
;
}
}
ret
=
lxc_mainloop_add_handler
(
descr
,
connection
,
lxc_cmd_handler
,
data
);
ret
=
lxc_mainloop_add_handler
(
descr
,
connection
,
lxc_cmd_handler
,
data
);
if
(
ret
)
{
if
(
ret
)
{
ERROR
(
"
failed to add handler
"
);
ERROR
(
"
Failed to add command handler.
"
);
goto
out_close
;
goto
out_close
;
}
}
...
@@ -988,17 +988,15 @@ int lxc_cmd_init(const char *name, struct lxc_handler *handler,
...
@@ -988,17 +988,15 @@ int lxc_cmd_init(const char *name, struct lxc_handler *handler,
fd
=
lxc_abstract_unix_open
(
path
,
SOCK_STREAM
,
0
);
fd
=
lxc_abstract_unix_open
(
path
,
SOCK_STREAM
,
0
);
if
(
fd
<
0
)
{
if
(
fd
<
0
)
{
ERROR
(
"failed (%d) to create the command service point %s"
,
errno
,
offset
);
ERROR
(
"Failed to create the command service point %s: %s."
,
if
(
errno
==
EADDRINUSE
)
{
offset
,
strerror
(
errno
));
ERROR
(
"##"
);
if
(
errno
==
EADDRINUSE
)
ERROR
(
"# The container appears to be already running!"
);
ERROR
(
"Container
\"
%s
\"
appears to be already running!"
,
name
);
ERROR
(
"##"
);
}
return
-
1
;
return
-
1
;
}
}
if
(
fcntl
(
fd
,
F_SETFD
,
FD_CLOEXEC
))
{
if
(
fcntl
(
fd
,
F_SETFD
,
FD_CLOEXEC
))
{
SYSERROR
(
"
failed to set sigfd to close-on-exec
"
);
SYSERROR
(
"
Failed to set FD_CLOEXEC on signal file descriptor.
"
);
close
(
fd
);
close
(
fd
);
return
-
1
;
return
-
1
;
}
}
...
@@ -1015,7 +1013,7 @@ int lxc_cmd_mainloop_add(const char *name,
...
@@ -1015,7 +1013,7 @@ int lxc_cmd_mainloop_add(const char *name,
ret
=
lxc_mainloop_add_handler
(
descr
,
fd
,
lxc_cmd_accept
,
handler
);
ret
=
lxc_mainloop_add_handler
(
descr
,
fd
,
lxc_cmd_accept
,
handler
);
if
(
ret
)
{
if
(
ret
)
{
ERROR
(
"
failed to add handler for command socket
"
);
ERROR
(
"
Failed to add handler for command socket.
"
);
close
(
fd
);
close
(
fd
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment