aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog10
-rw-r--r--camel/camel-service.c6
-rw-r--r--camel/providers/pop3/camel-pop3-store.c9
3 files changed, 15 insertions, 10 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 4cc6e9d281..31ef332e00 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,13 @@
+2000-03-30 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_getport): Add a htons in the
+ default_number case, and document the fact that the function
+ returns the port in network byte order.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Revert
+ Miguel's change. The port number bug was actually somewhere
+ else, and the IP address copying code was fine already.
+
2000-03-29 Miguel de Icaza <miguel@gnu.org>
* providers/pop3/camel-pop3-store.c (pop3_connect): Add htons
diff --git a/camel/camel-service.c b/camel/camel-service.c
index 01b72e1a70..b9ed7e5c96 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -476,8 +476,8 @@ camel_service_gethost (CamelService *service, CamelException *ex)
* based on the service's URL (which may contain either a numeric
* or symbolic port name) and the provided defaults.
*
- * Return value: a port number, or -1 if the user specified a port name
- * that could not be resolved.
+ * Return value: a port number (in network byte order), or -1 if the
+ * user specified a port name that could not be resolved.
**/
int
camel_service_getport (CamelService *service, char *default_port,
@@ -504,5 +504,5 @@ camel_service_getport (CamelService *service, char *default_port,
"Unknown port `%s'", port);
return -1;
} else
- return default_number;
+ return htons (default_number);
}
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
index b41c27b0aa..543a6ce532 100644
--- a/camel/providers/pop3/camel-pop3-store.c
+++ b/camel/providers/pop3/camel-pop3-store.c
@@ -233,13 +233,8 @@ pop3_connect (CamelService *service, CamelException *ex)
}
sin.sin_family = h->h_addrtype;
- sin.sin_port = htons (port);
-
- /*
- * We copy only 4 bytes, as we can not trust h->h_length, as it
- * comes from the DNS and might have been tampered with.
- */
- memcpy (&sin.sin_addr, h->h_addr, 4);
+ sin.sin_port = port;
+ memcpy (&sin.sin_addr, h->h_addr, sizeof (sin.sin_addr));
fd = socket (h->h_addrtype, SOCK_STREAM, 0);
if (fd == -1 ||