On Wed, 18 Oct 2017, Darren Tucker wrote:
> I meant reusing the existing function rather than cloning it. It's
> currently static so it needs to be exported but IMO that's better than
> duplicating the code.
>
> Index: packet.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/packet.c,v
> retrieving revision 1.265
> diff -u -p -r1.265 packet.c
> --- packet.c 13 Oct 2017 21:13:54 -0000 1.265
> +++ packet.c 17 Oct 2017 22:49:08 -0000
> @@ -1773,8 +1773,8 @@ ssh_packet_send_debug(struct ssh *ssh, c
> fatal("%s: %s", __func__, ssh_err(r));
> }
>
> -static void
> -fmt_connection_id(struct ssh *ssh, char *s, size_t l)
> +void
> +sshpkt_fmt_connection_id(struct ssh *ssh, char *s, size_t l)
> {
> snprintf(s, l, "%.200s%s%s port %d",
> ssh->log_preamble ? ssh->log_preamble : "",
> @@ -1790,7 +1790,7 @@ sshpkt_fatal(struct ssh *ssh, const char
> {
> char remote_id[512];
>
> - fmt_connection_id(ssh, remote_id, sizeof(remote_id));
> + sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id));
>
> switch (r) {
> case SSH_ERR_CONN_CLOSED:
> @@ -1852,7 +1852,7 @@ ssh_packet_disconnect(struct ssh *ssh, c
> * Format the message. Note that the caller must make sure the
> * message is of limited size.
> */
> - fmt_connection_id(ssh, remote_id, sizeof(remote_id));
> + sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id));
> va_start(args, fmt);
> vsnprintf(buf, sizeof(buf), fmt, args);
> va_end(args);
> Index: packet.h
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/packet.h,v
> retrieving revision 1.82
> diff -u -p -r1.82 packet.h
> --- packet.h 12 Sep 2017 06:32:07 -0000 1.82
> +++ packet.h 17 Oct 2017 22:49:08 -0000
> @@ -186,6 +186,7 @@ int sshpkt_get_cstring(struct ssh *ssh,
> int sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g);
> int sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v);
> int sshpkt_get_end(struct ssh *ssh);
> +void sshpkt_fmt_connection_id(struct ssh *ssh, char *s, size_t l);
> const u_char *sshpkt_ptr(struct ssh *, size_t *lenp);
>
> /* OLD API */
> Index: serverloop.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/serverloop.c,v
> retrieving revision 1.198
> diff -u -p -r1.198 serverloop.c
> --- serverloop.c 12 Sep 2017 06:35:32 -0000 1.198
> +++ serverloop.c 17 Oct 2017 22:49:08 -0000
> @@ -162,10 +162,12 @@ static void
> client_alive_check(struct ssh *ssh)
> {
> int channel_id;
> + char remote_id[512];
>
> /* timeout, check to see how many we have had */
> if (packet_inc_alive_timeouts() > options.client_alive_count_max) {
> - logit("Timeout, client not responding.");
> + sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id));
> + logit("Timeout, client not responding from %s", remote_id);
> cleanup_exit(255);
> }
>
>
Yes, thanks. That provides the log information I am looking for when a
client times out.
/Lars