You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dr...@locus.apache.org on 2000/03/11 15:11:37 UTC
cvs commit: apache-2.0/src/lib/apr/network_io/beos sockaddr.c sockets.c
dreid 00/03/11 06:11:37
Modified: src/lib/apr/network_io/beos sockaddr.c sockets.c
Log:
Tidy up and correct a few errors in the BeOS code. Also add Ronalds
changes. Add some error checking for the simple functions in
sockaddr.c
Revision Changes Path
1.5 +36 -0 apache-2.0/src/lib/apr/network_io/beos/sockaddr.c
Index: sockaddr.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/beos/sockaddr.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sockaddr.c 2000/03/10 00:06:24 1.4
+++ sockaddr.c 2000/03/11 14:11:36 1.5
@@ -57,24 +57,36 @@
ap_status_t ap_set_local_port(struct socket_t *sock, ap_uint32_t port)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
sock->local_addr->sin_port = htons((short)port);
return APR_SUCCESS;
}
ap_status_t ap_set_remote_port(struct socket_t *sock, ap_uint32_t port)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
sock->remote_addr->sin_port = htons((short)port);
return APR_SUCCESS;
}
ap_status_t ap_get_local_port(ap_uint32_t *port, struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
*port = ntohs(sock->local_addr->sin_port);
return APR_SUCCESS;
}
ap_status_t ap_get_remote_port(ap_uint32_t *port, struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
*port = ntohs(sock->remote_addr->sin_port);
return APR_SUCCESS;
}
@@ -82,6 +94,10 @@
ap_status_t ap_set_local_ipaddr(struct socket_t *sock, const char *addr)
{
u_long ipaddr;
+
+ if (!sock) {
+ return APR_EBADF;
+ }
if (!strcmp(addr, APR_ANYADDR)) {
sock->local_addr->sin_addr.s_addr = htonl(INADDR_ANY);
@@ -101,6 +117,10 @@
ap_status_t ap_set_remote_ipaddr(struct socket_t *sock, const char *addr)
{
u_long ipaddr;
+
+ if (!sock) {
+ return APR_EBADF;
+ }
if (!strcmp(addr, APR_ANYADDR)) {
sock->remote_addr->sin_addr.s_addr = htonl(INADDR_ANY);
@@ -119,12 +139,20 @@
ap_status_t ap_get_local_ipaddr(char **addr, const struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
+
*addr = ap_pstrdup(sock->cntxt, inet_ntoa(sock->local_addr->sin_addr));
return APR_SUCCESS;
}
ap_status_t ap_get_remote_ipaddr(char **addr, const struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
+
*addr = ap_pstrdup(sock->cntxt, inet_ntoa(sock->remote_addr->sin_addr));
return APR_SUCCESS;
}
@@ -132,12 +160,20 @@
ap_status_t ap_get_local_name(struct sockaddr_in **name, const struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
+
*name = sock->local_addr;
return APR_SUCCESS;
}
ap_status_t ap_get_remote_name(struct sockaddr_in **name, const struct socket_t *sock)
{
+ if (!sock) {
+ return APR_EBADF;
+ }
+
*name = sock->remote_addr;
return APR_SUCCESS;
}
1.18 +7 -8 apache-2.0/src/lib/apr/network_io/beos/sockets.c
Index: sockets.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/beos/sockets.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- sockets.c 2000/03/10 00:06:24 1.17
+++ sockets.c 2000/03/11 14:11:36 1.18
@@ -89,6 +89,7 @@
(*new)->remote_addr->sin_family = AF_INET;
(*new)->addr_len = sizeof(*(*new)->local_addr);
memset(&(*new)->local_addr->sin_zero, 0, sizeof((*new)->local_addr->sin_zero));
+ memset(&(*new)->remote_addr->sin_zero, 0, sizeof((*new)->remote_addr->sin_zero));
if ((*new)->socketdes < 0) {
return errno;
@@ -102,12 +103,7 @@
ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how)
{
- if (shutdown(thesocket->socketdes, how) == 0) {
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
+ return APR_SUCCESS;
}
ap_status_t ap_close_socket(struct socket_t *thesocket)
@@ -140,16 +136,19 @@
(*new)->cntxt = connection_context;
(*new)->local_addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt,
sizeof(struct sockaddr_in));
- memcpy((*new)->local_addr, sock->local_addr, sizeof(struct sockaddr_in));
(*new)->remote_addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt,
sizeof(struct sockaddr_in));
(*new)->addr_len = sizeof(struct sockaddr_in);
(*new)->connected = 1;
- (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->local_addr,
+ (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->remote_addr,
&(*new)->addr_len);
+ if (getsockname((*new)->socketdes, (struct sockaddr *)(*new)->local_addr,
+ &((*new)->addr_len)) < 0) {
+ return errno;
+ }
if ((*new)->socketdes <0){
return errno;
}