Begin of asynchronous SSH message parsing
Этот коммит содержится в:
родитель
916958a2bb
Коммит
cf482ae3bf
@ -722,6 +722,10 @@ int ssh_handle_packets(SSH_SESSION *session);
|
||||
/* match.c */
|
||||
int match_hostname(const char *host, const char *pattern, unsigned int len);
|
||||
|
||||
/* messages.c */
|
||||
|
||||
void message_handle(SSH_SESSION *session, u32 type);
|
||||
|
||||
/* log.c */
|
||||
|
||||
#define _enter_function(sess) \
|
||||
|
@ -542,6 +542,8 @@ static void channel_rcv_request(SSH_SESSION *session) {
|
||||
leave_function();
|
||||
return;
|
||||
}
|
||||
/* TODO call message_handle since it handles channel requests as messages */
|
||||
/* *but* reset buffer before !! */
|
||||
ssh_log(session, SSH_LOG_PACKET, "Unknown request %s", request);
|
||||
SAFE_FREE(request);
|
||||
|
||||
|
@ -806,6 +806,18 @@ void ssh_message_free(SSH_MESSAGE *msg){
|
||||
SAFE_FREE(msg);
|
||||
}
|
||||
|
||||
/** \internal
|
||||
* \brief handle various SSH request messages and stack them for callback
|
||||
* \param session SSH session
|
||||
* \param type packet type
|
||||
* \returns nothing
|
||||
*/
|
||||
void message_handle(SSH_SESSION *session, u32 type){
|
||||
SSH_MESSAGE *msg=ssh_message_retrieve(session,type);
|
||||
if(msg){
|
||||
/* TODO store msg somewhere */
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
@ -594,7 +594,7 @@ int packet_send(SSH_SESSION *session) {
|
||||
void packet_parse(SSH_SESSION *session) {
|
||||
STRING *error_s = NULL;
|
||||
char *error = NULL;
|
||||
int type = session->in_packet.type;
|
||||
u32 type = session->in_packet.type;
|
||||
u32 tmp;
|
||||
|
||||
#ifdef HAVE_SSH1
|
||||
@ -652,9 +652,15 @@ void packet_parse(SSH_SESSION *session) {
|
||||
case SSH2_MSG_CHANNEL_EOF:
|
||||
case SSH2_MSG_CHANNEL_CLOSE:
|
||||
channel_handle(session,type);
|
||||
return;
|
||||
case SSH2_MSG_IGNORE:
|
||||
case SSH2_MSG_DEBUG:
|
||||
return;
|
||||
case SSH2_MSG_SERVICE_REQUEST:
|
||||
case SSH2_MSG_USERAUTH_REQUEST:
|
||||
case SSH2_MSG_CHANNEL_OPEN:
|
||||
message_handle(session,type);
|
||||
return;
|
||||
default:
|
||||
ssh_log(session, SSH_LOG_RARE, "Received unhandled packet %d", type);
|
||||
}
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user