summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/b_sock.c
diff options
context:
space:
mode:
authorderaadt <>2014-04-13 23:31:37 +0000
committerderaadt <>2014-04-13 23:31:37 +0000
commitcda33257f58f8db3c1ca537b69068295429016a8 (patch)
tree89065e5111041f7b870af1a24c15040904c5bf5f /src/lib/libcrypto/bio/b_sock.c
parent9d346dca94e1cec09cd98f01e0431d371ef03467 (diff)
downloadopenbsd-cda33257f58f8db3c1ca537b69068295429016a8.tar.gz
openbsd-cda33257f58f8db3c1ca537b69068295429016a8.tar.bz2
openbsd-cda33257f58f8db3c1ca537b69068295429016a8.zip
Remove various horrible socket syscall wrappers, especially SHUTDOWN*
which did shutdown + close, all nasty and surprising. Use the raw syscalls that everyone knows the behaviour of. ok beck matthew
Diffstat (limited to 'src/lib/libcrypto/bio/b_sock.c')
-rw-r--r--src/lib/libcrypto/bio/b_sock.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c
index 41f958be71..779acbaaf5 100644
--- a/src/lib/libcrypto/bio/b_sock.c
+++ b/src/lib/libcrypto/bio/b_sock.c
@@ -221,7 +221,7 @@ int BIO_get_port(const char *str, unsigned short *port_ptr)
221#endif 221#endif
222 else 222 else
223 { 223 {
224 SYSerr(SYS_F_GETSERVBYNAME,get_last_socket_error()); 224 SYSerr(SYS_F_GETSERVBYNAME,errno);
225 ERR_add_error_data(3,"service='",str,"'"); 225 ERR_add_error_data(3,"service='",str,"'");
226 return(0); 226 return(0);
227 } 227 }
@@ -549,7 +549,7 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
549 int i; 549 int i;
550 550
551#ifdef __DJGPP__ 551#ifdef __DJGPP__
552 i=ioctlsocket(fd,type,(char *)arg); 552 i=ioctl(fd,type,(char *)arg);
553#else 553#else
554# if defined(OPENSSL_SYS_VMS) 554# if defined(OPENSSL_SYS_VMS)
555 /* 2011-02-18 SMS. 555 /* 2011-02-18 SMS.
@@ -574,10 +574,10 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
574# define ARG arg 574# define ARG arg
575# endif /* defined(OPENSSL_SYS_VMS) [else] */ 575# endif /* defined(OPENSSL_SYS_VMS) [else] */
576 576
577 i=ioctlsocket(fd,type,ARG); 577 i=ioctl(fd,type,ARG);
578#endif /* __DJGPP__ */ 578#endif /* __DJGPP__ */
579 if (i < 0) 579 if (i < 0)
580 SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error()); 580 SYSerr(SYS_F_IOCTLSOCKET,errno);
581 return(i); 581 return(i);
582 } 582 }
583#endif /* __VMS_VER */ 583#endif /* __VMS_VER */
@@ -629,7 +629,7 @@ int BIO_get_accept_socket(char *host, int bind_mode)
629 struct sockaddr_in6 sa_in6; 629 struct sockaddr_in6 sa_in6;
630#endif 630#endif
631 } server,client; 631 } server,client;
632 int s=INVALID_SOCKET,cs,addrlen; 632 int s=-1,cs,addrlen;
633 unsigned char ip[4]; 633 unsigned char ip[4];
634 unsigned short port; 634 unsigned short port;
635 char *str=NULL,*e; 635 char *str=NULL,*e;
@@ -637,9 +637,9 @@ int BIO_get_accept_socket(char *host, int bind_mode)
637 unsigned long l; 637 unsigned long l;
638 int err_num; 638 int err_num;
639 639
640 if (BIO_sock_init() != 1) return(INVALID_SOCKET); 640 if (BIO_sock_init() != 1) return(-1);
641 641
642 if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET); 642 if ((str=BUF_strdup(host)) == NULL) return(-1);
643 643
644 h=p=NULL; 644 h=p=NULL;
645 h=str; 645 h=str;
@@ -736,9 +736,9 @@ int BIO_get_accept_socket(char *host, int bind_mode)
736 736
737again: 737again:
738 s=socket(server.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL); 738 s=socket(server.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
739 if (s == INVALID_SOCKET) 739 if (s == -1)
740 { 740 {
741 SYSerr(SYS_F_SOCKET,get_last_socket_error()); 741 SYSerr(SYS_F_SOCKET,errno);
742 ERR_add_error_data(3,"port='",host,"'"); 742 ERR_add_error_data(3,"port='",host,"'");
743 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_CREATE_SOCKET); 743 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_CREATE_SOCKET);
744 goto err; 744 goto err;
@@ -756,7 +756,7 @@ again:
756 if (bind(s,&server.sa,addrlen) == -1) 756 if (bind(s,&server.sa,addrlen) == -1)
757 { 757 {
758#ifdef SO_REUSEADDR 758#ifdef SO_REUSEADDR
759 err_num=get_last_socket_error(); 759 err_num=errno;
760 if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) && 760 if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) &&
761#ifdef OPENSSL_SYS_WINDOWS 761#ifdef OPENSSL_SYS_WINDOWS
762 /* Some versions of Windows define EADDRINUSE to 762 /* Some versions of Windows define EADDRINUSE to
@@ -785,15 +785,15 @@ again:
785 else goto err; 785 else goto err;
786 } 786 }
787 cs=socket(client.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL); 787 cs=socket(client.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
788 if (cs != INVALID_SOCKET) 788 if (cs != -1)
789 { 789 {
790 int ii; 790 int ii;
791 ii=connect(cs,&client.sa,addrlen); 791 ii=connect(cs,&client.sa,addrlen);
792 closesocket(cs); 792 close(cs);
793 if (ii == INVALID_SOCKET) 793 if (ii == -1)
794 { 794 {
795 bind_mode=BIO_BIND_REUSEADDR; 795 bind_mode=BIO_BIND_REUSEADDR;
796 closesocket(s); 796 close(s);
797 goto again; 797 goto again;
798 } 798 }
799 /* else error */ 799 /* else error */
@@ -808,7 +808,7 @@ again:
808 } 808 }
809 if (listen(s,MAX_LISTEN) == -1) 809 if (listen(s,MAX_LISTEN) == -1)
810 { 810 {
811 SYSerr(SYS_F_BIND,get_last_socket_error()); 811 SYSerr(SYS_F_BIND,errno);
812 ERR_add_error_data(3,"port='",host,"'"); 812 ERR_add_error_data(3,"port='",host,"'");
813 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_LISTEN_SOCKET); 813 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_LISTEN_SOCKET);
814 goto err; 814 goto err;
@@ -816,17 +816,17 @@ again:
816 ret=1; 816 ret=1;
817err: 817err:
818 if (str != NULL) OPENSSL_free(str); 818 if (str != NULL) OPENSSL_free(str);
819 if ((ret == 0) && (s != INVALID_SOCKET)) 819 if ((ret == 0) && (s != -1))
820 { 820 {
821 closesocket(s); 821 close(s);
822 s= INVALID_SOCKET; 822 s= -1;
823 } 823 }
824 return(s); 824 return(s);
825 } 825 }
826 826
827int BIO_accept(int sock, char **addr) 827int BIO_accept(int sock, char **addr)
828 { 828 {
829 int ret=INVALID_SOCKET; 829 int ret=-1;
830 unsigned long l; 830 unsigned long l;
831 unsigned short port; 831 unsigned short port;
832 char *p; 832 char *p;
@@ -873,10 +873,10 @@ int BIO_accept(int sock, char **addr)
873 sa.len.i = (int)sa.len.s; 873 sa.len.i = (int)sa.len.s;
874 /* use sa.len.i from this point */ 874 /* use sa.len.i from this point */
875 } 875 }
876 if (ret == INVALID_SOCKET) 876 if (ret == -1)
877 { 877 {
878 if(BIO_sock_should_retry(ret)) return -2; 878 if(BIO_sock_should_retry(ret)) return -2;
879 SYSerr(SYS_F_ACCEPT,get_last_socket_error()); 879 SYSerr(SYS_F_ACCEPT,errno);
880 BIOerr(BIO_F_BIO_ACCEPT,BIO_R_ACCEPT_ERROR); 880 BIOerr(BIO_F_BIO_ACCEPT,BIO_R_ACCEPT_ERROR);
881 goto end; 881 goto end;
882 } 882 }