X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=apps%2Fs_server.c;h=23419495171c2381ace2891c03524d4251315604;hb=a1195a19f578ef026a17663ce8510f0bf7fd3766;hp=7d1b56926951bae654aa9e22e4560ca0991ed080;hpb=f5d7a031a3c3e7b1700a67d6dc19daf3718ce6ee;p=openssl.git diff --git a/apps/s_server.c b/apps/s_server.c index 7d1b569269..2341949517 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -56,6 +56,15 @@ * [including the GNU Public Licence.] */ +/* With IPv6, it looks like Digital has mixed up the proper order of + recursive header file inclusion, resulting in the compiler complaining + that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which + is needed to have fileno() declared correctly... So let's define u_int */ +#if defined(__DECC) && !defined(__U_INT) +#define __U_INT +typedef unsigned int u_int; +#endif + #include #include #include @@ -74,6 +83,11 @@ #include #include "s_apps.h" +#if (defined(VMS) && __VMS_VER < 70000000) +/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */ +#undef FIONBIO +#endif + #if defined(NO_RSA) && !defined(NO_SSL2) #define NO_SSL2 #endif @@ -94,8 +108,12 @@ static DH *get_dh512(void); /* static void s_server_init(void);*/ #ifndef S_ISDIR +#if defined(VMS) && !defined(__DECC) +#define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR) +#else #define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR) #endif +#endif #ifndef NO_DH static unsigned char dh512_p[]={ @@ -140,6 +158,7 @@ extern int verify_depth; static char *cipher=NULL; static int s_server_verify=SSL_VERIFY_NONE; +static int s_server_session_id_context = 1; /* anything will do */ static char *s_cert_file=TEST_CERT,*s_key_file=NULL; static char *s_dcert_file=NULL,*s_dkey_file=NULL; #ifdef FIONBIO @@ -503,6 +522,8 @@ bad: if (cipher != NULL) SSL_CTX_set_cipher_list(ctx,cipher); SSL_CTX_set_verify(ctx,s_server_verify,verify_callback); + SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context, + sizeof s_server_session_id_context); SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile)); @@ -610,7 +631,13 @@ static int sv_body(char *hostname, int s, unsigned char *context) FD_SET(fileno(stdin),&readfds); #endif FD_SET(s,&readfds); - i=select(width,&readfds,NULL,NULL,NULL); + /* Note: under VMS with SOCKETSHR the second parameter is + * currently of type (int *) whereas under other systems + * it is (void *) if you don't have a cast it will choke + * the compiler: if you do have a cast then you can either + * go for (int *) or (void *). + */ + i=select(width,(void *)&readfds,NULL,NULL,NULL); if (i <= 0) continue; if (FD_ISSET(fileno(stdin),&readfds)) {