diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/htmlparser.nim | 10 | ||||
-rw-r--r-- | lib/pure/httpclient.nim | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/pure/htmlparser.nim b/lib/pure/htmlparser.nim index fd58bed25..1fe0b297b 100644 --- a/lib/pure/htmlparser.nim +++ b/lib/pure/htmlparser.nim @@ -464,12 +464,18 @@ proc untilElementEnd(x: var XmlParser, result: XmlNode, case x.kind of xmlElementStart, xmlElementOpen: case result.htmlTag - of tagLi, tagP, tagDt, tagDd, tagInput, tagOption: - # some tags are common to have no ``</end>``, like ``<li>``: + of tagP, tagInput, tagOption: + # some tags are common to have no ``</end>``, like ``<li>`` but + # allow ``<p>`` in `<dd>`, `<dt>` and ``<li>`` in next case if htmlTag(x.elemName) in {tagLi, tagP, tagDt, tagDd, tagInput, tagOption}: errors.add(expected(x, result)) break + of tagDd, tagDt, tagLi: + if htmlTag(x.elemName) in {tagLi, tagDt, tagDd, tagInput, + tagOption}: + errors.add(expected(x, result)) + break of tagTd, tagTh: if htmlTag(x.elemName) in {tagTr, tagTd, tagTh, tagTfoot, tagThead}: errors.add(expected(x, result)) diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index bc964861d..37bc5d8f4 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -423,6 +423,7 @@ proc request*(url: string, httpMethod: string, extraHeaders = "", add(headers, extraHeaders) add(headers, "\c\L") var s = newSocket() + defer: s.close() if s == nil: raiseOSError(osLastError()) var port = net.Port(80) if r.scheme == "https": @@ -444,7 +445,6 @@ proc request*(url: string, httpMethod: string, extraHeaders = "", s.send(body) result = parseResponse(s, httpMethod != "httpHEAD", timeout) - s.close() proc request*(url: string, httpMethod = httpGET, extraHeaders = "", body = "", sslContext = defaultSSLContext, timeout = -1, |