Make the stuff compile again, fix missing prototype warnings.
[openssl.git] / crypto / bio / bss_dgram.c
index 173d871f567d9f81581942cff0483ad6402efa87..3d08102ea37ce2ff026bf720bd6f970c0e2c3fd1 100644 (file)
@@ -70,7 +70,9 @@
 #include <sys/timeb.h>
 #endif
 
+#ifdef OPENSSL_SYS_LINUX
 #define IP_MTU      14 /* linux is lame */
+#endif
 
 #ifdef WATT32
 #define sock_write SockWrite  /* Watt-32 uses same names */
@@ -287,7 +289,9 @@ static int dgram_read(BIO *b, char *out, int outl)
                                BIO_set_retry_read(b);
                                data->_errno = get_last_socket_error();
                                }
+#if 0
                        memset(&(data->hstimeout), 0, sizeof(struct timeval));
+#endif
                        }
                }
        return(ret);
@@ -401,22 +405,26 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
                break;
 #endif
        case BIO_CTRL_DGRAM_QUERY_MTU:
-         sockopt_len = sizeof(sockopt_val);
+#ifdef IP_MTU
+        sockopt_len = sizeof(sockopt_val);
                if ((ret = getsockopt(b->num, IPPROTO_IP, IP_MTU, (void *)&sockopt_val,
                        &sockopt_len)) < 0 || sockopt_val < 0)
                        { ret = 0; }
                else
                        {
-                       data->mtu = sockopt_val;
+                       data->mtu = sockopt_val - 20 - 8; /* Subtract IP and UDP header */
                        ret = data->mtu;
                        }
+#else
+               ret = 0;
+#endif
                break;
        case BIO_CTRL_DGRAM_GET_MTU:
                return data->mtu;
                break;
        case BIO_CTRL_DGRAM_SET_MTU:
-               data->mtu = num;
-               ret = num;
+               data->mtu = num - 20 - 8; /* Subtract IP and UDP header */
+               ret = data->mtu;
                break;
        case BIO_CTRL_DGRAM_SET_CONNECTED:
                to = (struct sockaddr *)ptr;