if(ac_stdout_fd < 0) {
print_error(SDB_MESSAGE_ERROR, ERR_GENERAL_INITIALIZE_ENV_FAIL, F(ERR_GENERAL_DUPLICATE_FAIL, "stdout"));
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
return -1;
}
if(ac_stderr_fd < 0) {
print_error(SDB_MESSAGE_ERROR, ERR_GENERAL_INITIALIZE_ENV_FAIL, F(ERR_GENERAL_DUPLICATE_FAIL, "stdout"));
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
return -1;
}
if(null_fd < 0) {
sdb_close(null_fd);
print_error(SDB_MESSAGE_ERROR, ERR_GENERAL_INITIALIZE_ENV_FAIL, F(ERR_SYNC_OPEN_FAIL, "/dev/null"));
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
return -1;
}
if(dup2(null_fd, STDOUT_FILENO) < 0){
sdb_close(null_fd);
print_error(SDB_MESSAGE_ERROR, ERR_GENERAL_INITIALIZE_ENV_FAIL, F(ERR_GENERAL_DUPLICATE_FAIL, "/dev/null"));
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
return -1;
}
sdb_close(null_fd);
fprintf(stderr, "error: exception happend while duplicating /dev/null to the stderr '%s'\n", strerror(errno));
print_error(SDB_MESSAGE_ERROR, ERR_GENERAL_INITIALIZE_ENV_FAIL, F(ERR_GENERAL_DUPLICATE_FAIL, "/dev/null"));
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
return -1;
}
LOG_FATAL("fdevent out of range FD(%d)\n", fd);
}
else if(fdevent_map_get(fd) != fde) {
- LOG_FATAL("fd event out of sync");
+ LOG_FATAL("fd event out of sync\n");
}
else {
fdevent_map_remove(fd);
if(fd < 0) {
print_error(SDB_MESSAGE_FATAL, ERR_SYNC_OPEN_CHANNEL_FAIL, ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
return fd;
if(writex(fd, &msg.req, sizeof(msg.req)) ||
writex(fd, path, len)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_STAT_FAIL, path), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
if(readx(fd, &msg.stat, sizeof(msg.stat))) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_STAT_FAIL, path), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
if(msg.stat.id != sync_stat) {
if(writex(fd, &msg.req, sizeof(msg.req)) || writex(fd, srcp, len)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_OPEN_FAIL, srcp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
return fd;
}
writex(fd, dstp, len) ||
writex(fd, tmp, r)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_OPEN_FAIL, dstp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
return fd;
if(writex(fd, &msg.data, sizeof(msg.data))) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_CLOSE_FAIL, dstp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
if(readx(fd, &msg.status, sizeof(msg.status))) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_CLOSE_FAIL, dstp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
if(msg.status.id != sync_okay) {
if(readx(fd, &(msg.data), sizeof(msg.data))) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_READ_FAIL, srcpath), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
id = msg.data.id;
buffer->size = ltohl(msg.data.size);
//fail
if(readx(fd, buffer->data, buffer->size)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_READ_FAIL, srcpath), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
//write and continue load
* if local write fails, protocol conflict happens unless we receive sync_done from remote
*/
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_WRITE_FAIL, dstp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
sync_info->total_bytes += len;
if(writex(fd, sbuf, sizeof(unsigned)*2 + size)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_WRITE_FAIL, dstp), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
sync_info->total_bytes += size;
char file_name[257];
if(readx(fd, file_name, len)) {
print_error(SDB_MESSAGE_FATAL, F(ERR_SYNC_GET_DIRLIST_FAIL, src_dir), ERR_GENERAL_CONNECTION_FAIL);
- LOG_ERROR(strerror(errno));
+ LOG_ERROR("%s\n", strerror(errno));
}
file_name[len] = 0;
listener = find_listener(local_port);
if(listener != NULL) {
if(listener->type != forwardListener) {
- LOG_ERROR("can not repurpose if it is not forward listener");
+ LOG_ERROR("can not repurpose if it is not forward listener\n");
return -1;
}
listener = find_listener(local_port);
if(listener != NULL) {
if(listener->type != forwardListener) {
- LOG_ERROR("can not repurpose if it is not forward listener");
+ LOG_ERROR("can not repurpose if it is not forward listener\n");
return -1;
}
#include "utils.h"
#include "strutils.h"
-int loglevel_mask;
+int loglevel_mask = 0;
//0 do not trace packet
//1 trace packet with MAX_DUMP_HEX_LEN
//2 trace full packet
{
char* sdb_debug = NULL;
-
if ((sdb_debug = getenv(DEBUG_ENV))) {
log_parse(sdb_debug);
}
trace_packet = 1;
}
}
+
+void log_init_server(void)
+{
+ // policy changed (2016-10-05)
+ // sdb server print fatal & error log even if no SDB_DEBUG env is set
+ loglevel_mask |= 1 << SDBLOG_FATAL;
+ loglevel_mask |= 1 << SDBLOG_ERROR;
+}
+
logging(SDBLOG_INFO, __FILE__, __FUNCTION__, __LINE__, args); } } while(0)
void log_init(void);
+void log_init_server(void);
void logging(LogLevel level, const char *filename, const char *funcname, int line_number, const char *fmt, ...);
void logging_hex(char* hex, char* asci);
void print_error(int level, const char* situation, const char* reason);
_exit(1);
}
if (is_daemon) {
+ log_init_server();
start_logging();
}
LOG_INFO("only_detect_tizen_device: %d\n", g_only_detect_tizen_device);
return 0;
}
p->msg.arg0 = ENCR_SET_ON_REQ; // Hello Msg임을 구분
- static int sessionID = 0;
+ static int sessionID = 0;
t->sessionID = sessionID; // 연결당 암호화 키 값을 위한 session ID 유지
if((retVal = security_init(t->sessionID, NULL)) == 1) // 암호화 handshaking을 위한 init 호출
{
{
security_deinit(t->sessionID); // init에 실패한 경우, 해당 session에 대해 deinit
}
-
+
return 0;
}
-
+
}
else if(!strncmp(service+11, "off", 3)){ // encrytption off
if(t->encryption == ENCR_OFF){ // 해당 연결이 이미 암호화 모드 off인 경우
return -3;
}
else{
- LOG_ERROR("parsing encryption commands failed\n");
+ LOG_ERROR("parsing encryption commands failed\n");
sendfailmsg(socket->fd, "Failed : Invalid encryption command");
return 0;
}
-
+
}
-
+
#endif
return -1;
err_str = error_message(SDB_MESSAGE_ERROR, ERR_CONNECT_TARGET_OFFLINE, NULL);
}
}
- LOG_ERROR("LS(%X) get no transport", s->local_id);
+ LOG_ERROR("LS(%X) get no transport\n", s->local_id);
sendfailmsg(s->fd, err_str);
goto fail;
}
int length = readx(_fd, &t_packet, sizeof(t_packet));
if(length == -1) {
- LOG_DEBUG("wakeup_select_func(): cannot read FD(%d) transport packet", _fd);
+ LOG_DEBUG("wakeup_select_func(): cannot read FD(%d) transport packet\n", _fd);
}
TRANSPORT* t= t_packet->t;
send_auth_response(p->data, p->msg.data_length, t);
} else {
/* No more private keys to try, send the public key */
- LOG_DEBUG("before send auth ok !!");
+ LOG_DEBUG("before send auth ok !!\n");
send_auth_publickey(t);
- LOG_DEBUG("send auth ok !!");
+ LOG_DEBUG("send auth ok !!\n");
}
#if 0 // daemon code (never happened in sdb server)
} else if (p->msg.arg0 == ADB_AUTH_SIGNATURE) {
static void _start_logging(void)
{
- const char* p = getenv(DEBUG_ENV);
- if (p == NULL && !getenv(TRACE_PACKET)) {
- return;
- }
int fd;
+ if (loglevel_mask == 0)
+ return;
+
fd = unix_open("/dev/null", O_RDONLY);
if (fd >= 0) {
dup2(fd, 0);
fd = unix_open("/tmp/sdb.log", O_WRONLY | O_CREAT | O_APPEND, 0640);
if(fd < 0) {
- print_error(SDB_MESSAGE_ERROR ,ERR_GENERAL_LOG_FAIL, F(ERR_SYNC_OPEN_FAIL, "/tmp/sdb/log"));
+ print_error(SDB_MESSAGE_ERROR ,ERR_GENERAL_LOG_FAIL, F(ERR_SYNC_OPEN_FAIL, "/tmp/sdb.log"));
fd = unix_open("/dev/null", O_WRONLY);
if( fd < 0 ) {
print_error(SDB_MESSAGE_ERROR ,ERR_GENERAL_LOG_FAIL, F(ERR_SYNC_OPEN_FAIL, "/dev/null"));
{
int ret = fcntl( fd, F_SETFD, FD_CLOEXEC );
if (ret == -1)
- LOG_ERROR("failed to set the file descriptor '%d': %s",fd ,strerror(errno));
+ LOG_ERROR("failed to set the file descriptor '%d': %s\n",fd ,strerror(errno));
}
static void _keep_alive(int fd, int onoff, int cnt, int idle, int interval)
static void _start_logging(void)
{
- const char* p = getenv(DEBUG_ENV);
- if (p == NULL) {
- return;
- }
-
char temp[ MAX_PATH ];
FILE* fnul;
FILE* flog;
+ if (loglevel_mask == 0)
+ return;
+
GetTempPath( sizeof(temp) - 8, temp );
strcat( temp, "sdb.log" );