summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--common-session.c14
-rw-r--r--process-packet.c2
2 files changed, 6 insertions, 10 deletions
diff --git a/common-session.c b/common-session.c
index b514796..6b357bf 100644
--- a/common-session.c
+++ b/common-session.c
@@ -33,7 +33,6 @@
#include "random.h"
#include "kex.h"
#include "channel.h"
-#include "atomicio.h"
#include "runopts.h"
static void checktimeouts();
@@ -50,8 +49,6 @@ int sessinitdone = 0; /* GLOBAL */
/* this is set when we get SIGINT or SIGTERM, the handler is in main.c */
int exitflag = 0; /* GLOBAL */
-
-
/* called only at the start of a session, set up initial state */
void common_session_init(int sock_in, int sock_out) {
@@ -257,13 +254,12 @@ void session_cleanup() {
TRACE(("leave session_cleanup"))
}
-
void send_session_identification() {
- /* write our version string, this blocks */
- if (atomicio(write, ses.sock_out, LOCAL_IDENT "\r\n",
- strlen(LOCAL_IDENT "\r\n")) == DROPBEAR_FAILURE) {
- ses.remoteclosed();
- }
+ buffer *writebuf = buf_new(strlen(LOCAL_IDENT "\r\n") + 1);
+ buf_putbytes(writebuf, LOCAL_IDENT "\r\n", strlen(LOCAL_IDENT "\r\n"));
+ buf_putbyte(writebuf, 0x0); // packet type
+ buf_setpos(writebuf, 0);
+ enqueue(&ses.writequeue, writebuf);
}
static void read_session_identification() {
diff --git a/process-packet.c b/process-packet.c
index 384e449..128eb72 100644
--- a/process-packet.c
+++ b/process-packet.c
@@ -48,7 +48,7 @@ void process_packet() {
TRACE2(("enter process_packet"))
type = buf_getbyte(ses.payload);
- TRACE(("process_packet: packet type = %d", type))
+ TRACE(("process_packet: packet type = %d, len %d", type, ses.payload->len))
ses.lastpacket = type;