if (!is_bsock_open(jcr->file_bsock)) {
char name[MAX_NAME_LENGTH + 100];
- POOL_MEM buf;
+ POOL_MEM buf, tmp;
bstrncpy(name, _("Client: "), sizeof(name));
bstrncat(name, jcr->client->name(), sizeof(name));
return 0;
}
+ if (jcr->JobId > 0) {
+ /* Print connection info only for real jobs */
+ POOL_MEM buf, tmp;
+ CLIENT *client = jcr->client;
+
+ build_connecting_info_log(_("Client"), client->name(),
+ get_client_address(jcr, client, tmp.addr()), client->FDport,
+ fd->tls ? true : false, buf.addr());
+ Jmsg(jcr, M_INFO, 0, "%s", buf.c_str());
+ }
+
/*
* Now send JobId and authorization key
*/
Dmsg2(100, "Connect to Storage daemon %s:%d\n", store->address,
store->SDport);
sd->set_source_address(director->DIRsrc_addr);
- //TODO is translating needed/useful here?
Mmsg(buf, _("Storage Daemon \"%s\""), store->name());
if (!sd->connect(jcr, retry_interval, max_retry_time, heart_beat, buf.c_str(),
store->address, NULL, store->SDport, verbose)) {
sd->close();
return false;
}
+
+ if (jcr->JobId > 0) {
+ /* Print connection info only for real jobs */
+ build_connecting_info_log(_("Storage"), store->name(),
+ get_storage_address(jcr->client, store), store->SDport,
+ sd->tls ? true : false, buf.addr());
+ Jmsg(jcr, M_INFO, 0, "%s", buf.c_str());
+ }
+
return true;
}
{
int stored_port = 0; /* storage daemon port */
int enable_ssl; /* enable ssl to sd */
- POOL_MEM sd_auth_key(PM_MESSAGE);
+ POOL_MEM sd_auth_key(PM_MESSAGE), buf;
BSOCK *dir = jcr->dir_bsock;
BSOCK *sd;
goto bail_out;
}
}
+
+ if (jcr->JobId > 0 && !jcr->sd_calls_client) {
+ /* Print connection info only for real jobs.
+ * We don't have storage name here, log connection info w/o it anyway */
+ build_connecting_info_log(_("Storage"), "",
+ jcr->stored_addr, stored_port,
+ jcr->store_bsock->tls ? true : false, buf.addr());
+ Jmsg(jcr, M_INFO, 0, "%s", buf.c_str());
+ }
+
memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
Dmsg0(110, "Authenticated with SD.\n");
POOLMEM *fileset_md5; /* MD5 for FileSet */
char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */
char client_addr[MAX_NAME_LENGTH]; /* client daemon address */
+ int client_port; /* client port */
VOL_LIST *VolList; /* list to read, freed at the end of the job */
int32_t NumWriteVolumes; /* number of volumes written */
int32_t NumReadVolumes; /* total number of volumes to read */
free(daemon_msg_queue);
V(daemon_msg_queue_mutex);
}
+
+char *build_connecting_info_log(const char *daemon, const char *name, const char *addr, int port, bool tls, POOLMEM *&buf)
+{
+ if (*name) {
+ Mmsg(buf, conn_info_w_name, daemon, name, addr, port,
+ tls ? _("with TLS") : _("without encryption"));
+ } else {
+ Mmsg(buf, conn_info_wo_name, daemon, addr, port,
+ tls ? _("with TLS") : _("without encryption"));
+ }
+ return buf;
+}
#define DT_ASX (1<<16) /* used by Alain for personal debugging */
#define DT_ALL (0x7FFF0000) /* all (up to debug_level 65635, 15 flags available) */
+const char conn_info_w_name[] = "Connected to %s \"%s\" at %s:%d %s\n";
+const char conn_info_wo_name[] = "Connected to %s at %s:%d %s\n";
+
const char *debug_get_tag(uint32_t pos, const char **desc);
bool debug_find_tag(const char *tagname, bool add, int64_t *current_level);
bool debug_parse_tags(const char *options, int64_t *current_level);
bool is_message_type_set(JCR *jcr, int type);
void set_trace_for_tools(FILE *new_trace_fd); // called by Bacula's tools only
void update_trace_file_location(bool safe);
+char *build_connecting_info_log(const char *daemon, const char *name, const char *addr, int port, bool tls, POOLMEM *&buf);
class BDB; /* define forward reference */
typedef bool (*sql_insert_log)(JCR *jcr, JobId_t jobid, utime_t mtime, char *msg);
*/
static bool client_cmd(JCR *jcr)
{
- int client_port; /* client port */
int enable_ssl; /* enable ssl */
BSOCK *dir = jcr->dir_bsock;
BSOCK *cl = new_bsock(); /* client bsock */
+ POOL_MEM buf;
Dmsg1(100, "ClientCmd: %s", dir->msg);
jcr->sd_calls_client = true;
- if (sscanf(dir->msg, "client address=%127s port=%d ssl=%d", jcr->client_addr, &client_port,
+ if (sscanf(dir->msg, "client address=%127s port=%d ssl=%d", jcr->client_addr, &jcr->client_port,
&enable_ssl) != 3) {
/* destroy() OK because cl is local */
cl->destroy();
goto bail_out;
}
- Dmsg3(110, "Connect to client: %s:%d ssl=%d\n", jcr->client_addr, client_port,
+ Dmsg3(110, "Connect to client: %s:%d ssl=%d\n", jcr->client_addr, jcr->client_port,
enable_ssl);
/* Open command communications with Client */
/* Try to connect for 1 hour at 10 second intervals */
if (!cl->connect(jcr, 10, (int)me->ClientConnectTimeout, me->heartbeat_interval,
- _("Client daemon"), jcr->client_addr, NULL, client_port, 1)) {
+ _("Client daemon"), jcr->client_addr, NULL, jcr->client_port, 1)) {
/* destroy() OK because cl is local */
cl->destroy();
Jmsg(jcr, M_FATAL, 0, _("[SF0102] Failed to connect to Client daemon: %s:%d\n"),
- jcr->client_addr, client_port);
+ jcr->client_addr, jcr->client_port);
Dmsg2(100, "Failed to connect to Client daemon: %s:%d\n",
- jcr->client_addr, client_port);
+ jcr->client_addr, jcr->client_port);
goto bail_out;
}
+
Dmsg0(110, "SD connection OK to Client.\n");
jcr->file_bsock = cl;
goto bail_out;
}
+ if (jcr->JobId > 0) {
+ POOL_MEM buf;
+ /* Print connection info only for real jobs */
+ build_connecting_info_log(_("Storage"), "",
+ jcr->stored_addr, stored_port,
+ sd->tls ? true : false, buf.addr());
+ Jmsg(jcr, M_INFO, 0, "%s", buf.c_str());
+ }
+
/*
* We are a client so we read from the socket we just
* opened as if we were a FD, so set file_bsock and
} else {
jcr->authenticated = true;
}
+
+ if (jcr->JobId > 0) {
+ POOL_MEM buf;
+ /* Print connection info only for real jobs.
+ * We don't have client name here, log connection info w/o it anyway */
+ build_connecting_info_log(_("Client"), "",
+ jcr->client_addr, jcr->client_port,
+ jcr->file_bsock->tls ? true : false, buf.addr());
+ Jmsg(jcr, M_INFO, 0, "%s", buf.c_str());
+ }
+
} else if (!jcr->sd_client) {
/* We wait to receive connection from Client */
gettimeofday(&tv, &tz);