vcl: hold errno when calling LDBG
Type: fix Call trace of LDBG: LDBG->clib_warning->_clib_error->dispatch_message->os_puts->writev However, writev will hijacked by LDP, and then execute following code: if ((errno = -ldp_init ())) return -1; Now, errno will be set. Because we always call LDBG just before return from ldp_accept4, listen, and etc. So errno will be overwritted after LDBG called. Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: I7a90f3a14772994f11f09650481411796e3f5630
This commit is contained in:
@ -109,7 +109,11 @@ typedef struct
|
||||
|
||||
#define LDBG(_lvl, _fmt, _args...) \
|
||||
if (ldp->debug > _lvl) \
|
||||
clib_warning ("ldp<%d>: " _fmt, getpid(), ##_args)
|
||||
{ \
|
||||
int errno_saved = errno; \
|
||||
clib_warning ("ldp<%d>: " _fmt, getpid(), ##_args); \
|
||||
errno = errno_saved; \
|
||||
}
|
||||
|
||||
static ldp_main_t ldp_main = {
|
||||
.vlsh_bit_val = (1 << LDP_SID_BIT_MIN),
|
||||
|
Reference in New Issue
Block a user