Branch: Tag:

2016-05-09

2016-05-09 22:21:49 by Pontus Östlund <poppanator@gmail.com>

Protocols.HTTP.Query: Fixed an old bug (https://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=7676) where basically the timeout in timed_async_fetch wasn't reset each new data read.
This timeout had it's own property (data_timeout) which now is "deprecated" since the property "timeout" pretty much serves the same purpose, but on connection. So now timeout is the default value to use unless data_timeout is explicitly set, in which case that value will be used.
Since there was no proper way to set a max time for the entire operation (well, that was by accident and not intention how the data_timeout in timed_async_fetch worked) the new property "maxtime" has been added. If this is set (default is 0=indefinetly) the request will be aborted after maxtime second even if data is still being read.

So in short:

data_timeout = 0 // unless explicitly set
timeout = 120 // connection timeout, and then data read timeout
maxtime = 0 // 0 = off, otherwise the entire operation must be done within maxtime seconds or else the request is aborted

Protocols.HTTP.Session: Added some documentation

Protocols.HTTP.Promise: New module which utilise the new Concurrent.Promise/Future stuff for HTTP requests. Internally uses Protcols.HTTP.Session for the actual HTTP stuff.

Web.Api.Api: Now fetches data asynchronously when async calls are made.

Concurrent: on_success and on_fail now returns the object being called so that they can be chained.

Parser.Markdown: Fixed the #require macro directive.

279:    "Stdio.Port()->bind()": "7.8::SSL.sslport.bind":1,    "Stdio.Port()->listen_fd()": "7.8::SSL.sslport.listen_fd":1,    "Stdio.stdout.write()": "predef::Stdio":1, +  "Sucess": "predef::Protocols.HTTP.Promise.get_url":1,    "System.EPIPE": "7.8::SSL.sslfile":1, "7.8::SSL.sslfile.shutdown":1, "7.8::Stdio.File.set_read_callback":1, "predef::SSL.File":1, "predef::SSL.File.shutdown":1, "predef::Stdio.File.set_read_callback":1,    "System._FSEvents": "predef::System.FSEvents":1,    "System.set_file_atime": "predef::System.utime":1,
297:    "Tools.Standalone.features": "predef::Tools.Install.features":1,    "Type": "predef::GTK2.build_pgtk.Constant":1, "predef::GTK2.build_pgtk.Constant.create":1, "predef::GTK2.build_pgtk.Function":2, "predef::GTK2.build_pgtk.Function.create":2, "predef::GTK2.build_pgtk.Member":1, "predef::GTK2.build_pgtk.Member.create":1, "predef::GTK2.build_pgtk.Property":1, "predef::GTK2.build_pgtk.Property.create":1,    "UNDEFIEND": "predef::SSL.Context.find_cert_issuer":1, -  "URL": "predef::Protocols.HTTP.Session.Request.prepare_method":1, "predef::Protocols.HTTP.Session.SessionURL":1, "predef::Protocols.HTTP.Session.SessionURL.create":3, "predef::Protocols.HTTP.Session.async_get_url":4, "predef::Protocols.HTTP.Session.get_url":4, "predef::Protocols.HTTP.Session.get_url_nice":4, +     "User": "predef::Web.Api.Instagram.V1":1,    "Verifier": "8.0::Tools.X509.TBSCertificate":1, "8.0::Tools.X509.make_verifier":1, "8.0::Tools.X509.rsa_verifier":1,    "Web.Auth.OWeb.Auth.Client": "predef::Web.Api.Api":1,
337:    "backtrace_frame": "predef::Error.Generic":1, "predef::Error.Generic.create":1, "predef::MasterObject.describe_backtrace":1,    "bind": "7.8::Stdio.Port.create":1,    "bind()": "7.8::Stdio.Port.create":1, -  "bool": "predef::Crypto.DH.Parameters.validate":1, "predef::Crypto.verify_crypt_md5":1, "predef::HTTPAccept.Loop.create":1, "predef::HTTPAccept.Loop.logp":1, "predef::Image.PSD._decode":6, "predef::Image.PSD.decode_layers":2, "predef::Image.WebP.encode":6, "predef::Image.XCF._decode":5, "predef::Image.XCF.decode_layers":3, "predef::NetUtils.NetMask.ip_in":1, "predef::NetUtils.get_network_type":1, "predef::NetUtils.has_ipv4":1, "predef::NetUtils.has_ipv6":1, "predef::NetUtils.ip_and_port_of":1, "predef::NetUtils.ip_in_block":1, "predef::NetUtils.ip_less_global":2, "predef::NetUtils.ip_of":1, "predef::NetUtils.ip_to_string":1, "predef::NetUtils.is_ipv6":1, "predef::NetUtils.is_local_host":2, "predef::NetUtils.local_ips":1, "predef::NetUtils.local_ips_raw":1, "predef::NetUtils.port_of":1, "predef::NetUtils.sort_addresses":1, "predef::NetUtils.valid_domain_name":1, "predef::Parser.Markdown.Marked.encode_html":1, "predef::Parser.Markdown.Marked.parse":10, "predef::Pike.Watchdog.add_probe":1, "predef::Stdio.Buffer.range_error":1, "predef::Stdio.Buffer.read_buffer":1, "predef::Stdio.Buffer.read_hbuffer":1, "predef::Stdio.FakePipe.InternalSocket.read":1, "predef::Web.Auth.OAuth2.Base.do_query":1, "predef::Web.Auth.OAuth2.Base.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Base.refresh_access_token":1, "predef::Web.Auth.OAuth2.Base.request_access_token":1, "predef::Web.Auth.OAuth2.Client.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Client.refresh_access_token":1, "predef::Web.Auth.OAuth2.Client.request_access_token":1, +  "bool": "predef::Crypto.DH.Parameters.validate":1, "predef::Crypto.verify_crypt_md5":1, "predef::HTTPAccept.Loop.create":1, "predef::HTTPAccept.Loop.logp":1, "predef::Image.PSD._decode":6, "predef::Image.PSD.decode_layers":2, "predef::Image.WebP.encode":6, "predef::Image.XCF._decode":5, "predef::Image.XCF.decode_layers":3, "predef::NetUtils.NetMask.ip_in":1, "predef::NetUtils.get_network_type":1, "predef::NetUtils.has_ipv4":1, "predef::NetUtils.has_ipv6":1, "predef::NetUtils.ip_and_port_of":1, "predef::NetUtils.ip_in_block":1, "predef::NetUtils.ip_less_global":2, "predef::NetUtils.ip_of":1, "predef::NetUtils.ip_to_string":1, "predef::NetUtils.is_ipv6":1, "predef::NetUtils.is_local_host":2, "predef::NetUtils.local_ips":1, "predef::NetUtils.local_ips_raw":1, "predef::NetUtils.port_of":1, "predef::NetUtils.sort_addresses":1, "predef::NetUtils.valid_domain_name":1, "predef::Parser.Markdown.Marked.encode_html":1, "predef::Parser.Markdown.Marked.parse":10, "predef::Pike.Watchdog.add_probe":1, "predef::Protocols.HTTP.Promise.Result":1, "predef::Stdio.Buffer.range_error":1, "predef::Stdio.Buffer.read_buffer":1, "predef::Stdio.Buffer.read_hbuffer":1, "predef::Stdio.FakePipe.InternalSocket.read":1, "predef::Web.Auth.OAuth2.Base.do_query":1, "predef::Web.Auth.OAuth2.Base.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Base.refresh_access_token":1, "predef::Web.Auth.OAuth2.Base.request_access_token":1, "predef::Web.Auth.OAuth2.Client.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Client.refresh_access_token":1, "predef::Web.Auth.OAuth2.Client.request_access_token":1,    "bpn": "predef::Image.XPM._xpm_write_rows":1,    "bytes": "predef::Stdio.Buffer.read":1,    "calendar.time.set_timezone": "predef::Calendar.Timezone":1,
1305:   "predef::Protocols.DNS.server_base.handle_query": "send_reply()"   "predef::Protocols.DNS.server_base.reply_query": "an"   "predef::Protocols.DNS_SD.Service": "_Protocols_DNS_SD.Service" + "predef::Protocols.HTTP.Promise.Result": "bool" + "predef::Protocols.HTTP.Promise.get_url": "Sucess"   "predef::Protocols.HTTP.Server.SSLPort.create": "Crypto.Sign.State" - "predef::Protocols.HTTP.Session.Request.prepare_method": "URL" - "predef::Protocols.HTTP.Session.SessionURL": "URL" - "predef::Protocols.HTTP.Session.SessionURL.create": "URL" - "predef::Protocols.HTTP.Session.async_get_url": "URL" - "predef::Protocols.HTTP.Session.get_url": "URL" - "predef::Protocols.HTTP.Session.get_url_nice": "URL" +    "predef::Protocols.HTTP.Session.set_cookie": "Cookie"   "predef::Protocols.HTTP.do_method": "do_sync_method()"   "predef::Protocols.HTTP2.Frame": "FRAME_header" "FRAME_push_promise" "Flag" "FrameType"