mirror of
				https://github.com/libssh2/libssh2.git
				synced 2025-11-03 22:13:11 +03:00 
			
		
		
		
	VMS port of libssh2; changes in the libssh2 common code
This commit is contained in:
		
				
					committed by
					
						
						Daniel Stenberg
					
				
			
			
				
	
			
			
			
						parent
						
							d4edb0b9c3
						
					
				
				
					commit
					c511177d39
				
			@@ -1110,7 +1110,7 @@ _libssh2_debug(LIBSSH2_SESSION * session, int context, const char *format, ...)
 | 
				
			|||||||
#define SSH_MSG_CHANNEL_SUCCESS                     99
 | 
					#define SSH_MSG_CHANNEL_SUCCESS                     99
 | 
				
			||||||
#define SSH_MSG_CHANNEL_FAILURE                     100
 | 
					#define SSH_MSG_CHANNEL_FAILURE                     100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef WIN32
 | 
					#if defined( WIN32 ) || defined( __VMS )
 | 
				
			||||||
ssize_t _libssh2_recv(libssh2_socket_t socket, void *buffer, size_t length, int flags);
 | 
					ssize_t _libssh2_recv(libssh2_socket_t socket, void *buffer, size_t length, int flags);
 | 
				
			||||||
ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int flags);
 | 
					ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int flags);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								src/misc.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/misc.c
									
									
									
									
									
								
							@@ -96,6 +96,11 @@ _libssh2_recv(libssh2_socket_t socket, void *buffer, size_t length, int flags)
 | 
				
			|||||||
#ifdef WIN32
 | 
					#ifdef WIN32
 | 
				
			||||||
    if (rc < 0 )
 | 
					    if (rc < 0 )
 | 
				
			||||||
        errno = wsa2errno();
 | 
					        errno = wsa2errno();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef __VMS
 | 
				
			||||||
 | 
					    if (rc < 0 ){
 | 
				
			||||||
 | 
					       if ( errno == EWOULDBLOCK ) errno = EAGAIN;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    return rc;
 | 
					    return rc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -115,6 +120,11 @@ _libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int fl
 | 
				
			|||||||
#ifdef WIN32
 | 
					#ifdef WIN32
 | 
				
			||||||
    if (rc < 0 )
 | 
					    if (rc < 0 )
 | 
				
			||||||
        errno = wsa2errno();
 | 
					        errno = wsa2errno();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef VMS
 | 
				
			||||||
 | 
					    if (rc < 0 ){
 | 
				
			||||||
 | 
					       if ( errno == EWOULDBLOCK ) errno = EAGAIN;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    return rc;
 | 
					    return rc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -280,7 +280,7 @@ session_nonblock(libssh2_socket_t sockfd,   /* operate on this */
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(HAVE_FIONBIO) && (SETBLOCK == 0)
 | 
					#if defined(HAVE_FIONBIO) && (SETBLOCK == 0)
 | 
				
			||||||
    /* older unix versions */
 | 
					    /* older unix versions and VMS*/
 | 
				
			||||||
    int flags;
 | 
					    int flags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    flags = nonblock;
 | 
					    flags = nonblock;
 | 
				
			||||||
@@ -375,10 +375,28 @@ get_socket_nonblocking(int sockfd)
 | 
				
			|||||||
#define GETBLOCK 5
 | 
					#define GETBLOCK 5
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(SO_STATE) && defined( __VMS ) && (GETBLOCK == 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* VMS TCP/IP Services */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    size_t sockstat = 0;
 | 
				
			||||||
 | 
					    int    callstat = 0;
 | 
				
			||||||
 | 
					    size_t size = sizeof( int );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    callstat = getsockopt(sockfd, SOL_SOCKET, SO_STATE,
 | 
				
			||||||
 | 
					                                  (char *)&sockstat, &size);
 | 
				
			||||||
 | 
					    if ( callstat == -1 ) return(0);
 | 
				
			||||||
 | 
					    if ( (sockstat&SS_NBIO) )return(1);
 | 
				
			||||||
 | 
					    return(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef GETBLOCK
 | 
				
			||||||
 | 
					#define GETBLOCK 6
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_DISABLED_NONBLOCKING
 | 
					#ifdef HAVE_DISABLED_NONBLOCKING
 | 
				
			||||||
    return 1;                   /* returns blocking */
 | 
					    return 1;                   /* returns blocking */
 | 
				
			||||||
#undef GETBLOCK
 | 
					#undef GETBLOCK
 | 
				
			||||||
#define GETBLOCK 6
 | 
					#define GETBLOCK 7
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if (GETBLOCK == 0)
 | 
					#if (GETBLOCK == 0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -601,7 +601,7 @@ sign_fromfile(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len,
 | 
				
			|||||||
    if(rc)
 | 
					    if(rc)
 | 
				
			||||||
        return rc;
 | 
					        return rc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    datavec.iov_base = (unsigned char *)data;
 | 
					    datavec.iov_base = (void *)data;
 | 
				
			||||||
    datavec.iov_len  = data_len;
 | 
					    datavec.iov_len  = data_len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (privkeyobj->signv(session, sig, sig_len, 1, &datavec,
 | 
					    if (privkeyobj->signv(session, sig, sig_len, 1, &datavec,
 | 
				
			||||||
@@ -711,11 +711,11 @@ userauth_hostbased_fromfile(LIBSSH2_SESSION *session,
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        _libssh2_htonu32(buf, session->session_id_len);
 | 
					        _libssh2_htonu32(buf, session->session_id_len);
 | 
				
			||||||
        datavec[0].iov_base = buf;
 | 
					        datavec[0].iov_base = (void *)buf;
 | 
				
			||||||
        datavec[0].iov_len = 4;
 | 
					        datavec[0].iov_len = 4;
 | 
				
			||||||
        datavec[1].iov_base = session->session_id;
 | 
					        datavec[1].iov_base = (void *)session->session_id;
 | 
				
			||||||
        datavec[1].iov_len = session->session_id_len;
 | 
					        datavec[1].iov_len = session->session_id_len;
 | 
				
			||||||
        datavec[2].iov_base = session->userauth_host_packet;
 | 
					        datavec[2].iov_base = (void *)session->userauth_host_packet;
 | 
				
			||||||
        datavec[2].iov_len = session->userauth_host_packet_len;
 | 
					        datavec[2].iov_len = session->userauth_host_packet_len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (privkeyobj->signv(session, &sig, &sig_len, 3, datavec, &abstract)) {
 | 
					        if (privkeyobj->signv(session, &sig, &sig_len, 3, datavec, &abstract)) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user