Patches: - HTMLparser.c: htmlCheckParagraph to check
Patches:
- HTMLparser.c: htmlCheckParagraph to check htmlOmittedDefaultValue,
reported by Jonas Borgström
- nanohttp.c: Applied Bjorn Reese' IPV6 first patch
Daniel
diff --git a/ChangeLog b/ChangeLog
index fed3ad3..78db69a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Jan 3 18:56:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+ * HTMLparser.c: htmlCheckParagraph to check htmlOmittedDefaultValue,
+ reported by Jonas Borgström
+ * nanohttp.c: Applied Bjorn Reese' IPV6 first patch
+
Wed Jan 3 16:19:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
* testXPath.c xpath.c: fixing the XPath union expressions problem
diff --git a/HTMLparser.c b/HTMLparser.c
index a494132..a395c7c 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -925,6 +925,8 @@
ctxt->sax->startElement(ctxt->userData, BAD_CAST"p", NULL);
return(1);
}
+ if (!htmlOmittedDefaultValue)
+ return;
for (i = 0; htmlNoContentElements[i] != NULL; i++) {
if (xmlStrEqual(tag, BAD_CAST htmlNoContentElements[i])) {
#ifdef DEBUG
diff --git a/nanohttp.c b/nanohttp.c
index e80b88b..3502e19 100644
--- a/nanohttp.c
+++ b/nanohttp.c
@@ -60,6 +60,9 @@
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#ifdef SUPPORT_IP6
+#include <resolv.h>
+#endif
#ifdef VMS
#include <stropts>
@@ -643,10 +646,9 @@
*/
static int
-xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
+xmlNanoHTTPConnectAttempt(struct sockaddr *addr, int port)
{
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- struct sockaddr_in sin;
fd_set wfd;
struct timeval tv;
int status;
@@ -692,11 +694,7 @@
#endif /* !_WINSOCKAPI_ */
- sin.sin_family = AF_INET;
- sin.sin_addr = ia;
- sin.sin_port = htons(port);
-
- if ((connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1)) {
+ if ((connect(s, addr, sizeof(*addr))==-1)) {
switch (socket_errno()) {
case EINPROGRESS:
case EWOULDBLOCK:
@@ -764,9 +762,21 @@
xmlNanoHTTPConnectHost(const char *host, int port)
{
struct hostent *h;
+ struct sockaddr *addr;
+ struct in_addr ia;
+ struct sockaddr_in sin;
+#ifdef SUPPORT_IP6
+ struct in6_addr ia6;
+ struct sockaddr_in6 sin6;
+#endif
int i;
int s;
+#if defined(SUPPORT_IP6) && defined(RES_USE_INET6)
+ if (!(_res.options & RES_INIT))
+ res_init();
+ _res.options |= RES_USE_INET6;
+#endif
h=gethostbyname(host);
if (h==NULL)
{
@@ -778,9 +788,26 @@
for(i=0; h->h_addr_list[i]; i++)
{
- struct in_addr ia;
- memcpy(&ia, h->h_addr_list[i],4);
- s = xmlNanoHTTPConnectAttempt(ia, port);
+ if (h->h_addrtype == AF_INET) {
+ /* A records (IPv4) */
+ memcpy(&ia, h->h_addr_list[i], h->h_length);
+ sin.sin_family = h->h_addrtype;
+ sin.sin_addr = ia;
+ sin.sin_port = htons(port);
+ addr = (struct sockaddr *)&sin;
+#ifdef SUPPORT_IP6
+ } else if (h->h_addrtype == AF_INET6) {
+ /* AAAA records (IPv6) */
+ memcpy(&ia6, h->h_addr_list[i], h->h_length);
+ sin6.sin_family = h->h_addrtype;
+ sin6.sin_addr = ia6;
+ sin6.sin_port = htons(port);
+ addr = (struct sockaddr *)&sin6;
+#endif
+ } else
+ break; /* for */
+
+ s = xmlNanoHTTPConnectAttempt(addr, port);
if (s != -1)
return(s);
}