HX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW portable provisional Graham Klyne <gk@ninebynine.org>None%&Type for authority value within a URI   anonymous@ www.haskell.org :429Represents a general universal resource identifier using  its component parts. For example, for the URI  5 foo://anonymous@www.haskell.org:42/ghc?query#frag the components are:  foo: // anonymous@www.haskell.org:42 /ghc ?query #frag  Blank URI &Turn a string containing a URI into a .  Returns X# if the string is not a valid URI; 7 (an absolute URI with optional fragment identifier). 7NOTE: this is different from the previous network.URI,  whose parseURI function works like   in this module. Parse a URI reference to a  value.  Returns X- if the string is not a valid URI reference. C (an absolute or relative URI with optional fragment identifier). Parse a relative URI to a  value.  Returns X, if the string is not a valid relative URI. 6 (a relative URI with optional fragment identifier). Parse an absolute URI to a  value.  Returns X, if the string is not a valid absolute URI. 3 (an absolute URI without a fragment identifier). $Test if string contains a valid URI 7 (an absolute URI with optional fragment identifier). .Test if string contains a valid URI reference C (an absolute or relative URI with optional fragment identifier). -Test if string contains a valid relative URI 6 (a relative URI with optional fragment identifier). -Test if string contains a valid absolute URI 3 (an absolute URI without a fragment identifier). -Test if string contains a valid IPv6 address -Test if string contains a valid IPv4 address Y5Test function: parse and reconstruct a URI reference Returns Z if the character is a "reserved" character in a F URI. To include a literal instance of one of these characters in a * component of a URI, it must be escaped. Returns Z if the character is an " unreserved" character in D a URI. These characters do not need to be escaped in a URI. The . only characters allowed in a URI are either "reserved",  " unreserved", or an escape sequence (% followed by two hex digits). Turn a  into a string. >Uses a supplied function to map the userinfo part of the URI. AThe Show instance for URI uses a mapping that hides any password C that may be present in the URI. Use this function with argument id 4 to preserve the password in the formatted output. Returns Z' if the character is allowed in a URI. Returns Z1 if the character is allowed unescaped in a URI. Returns Z; if the character is allowed unescaped in a URI component. 9Escape character if supplied predicate is not satisfied, 2 otherwise return character as singleton string. 5Can be used to make a string valid for use in a URI. !=Turns all instances of escaped characters in the string back  into literal characters. "Returns a new # which represents the value of the  first ' interpreted as relative to the second .  For example:  = "foo" `relativeTo` "http://bar.org/" = "http://bar.org/foo" K "http:foo" `nonStrictRelativeTo` "http://bar.org/" = "http://bar.org/foo" Algorithm from RFC3986 [3], section 5.2.2 #Returns a new ) which represents the value of the first  ' interpreted as relative to the second . Algorithm from RFC3986 [3], section 5.2 $Returns a new + which represents the relative location of  the first  with respect to the second  . Thus, the C values supplied are expected to be absolute URIs, and the result " returned may be a relative URI.  Example:  + "http://example.com/Root/sub1/name2#frag" < `relativeFrom` "http://example.com/Root/sub2/name2#frag"  == "../sub1/name2#frag" <There is no single correct implementation of this function, @ but any acceptable implementation must satisfy the following:  8 (uabs `relativeFrom` ubase) `relativeTo` ubase == uabs For any valid absolute URI.  (cf.  9http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html   9http://lists.w3.org/Archives/Public/uri/2003Jan/0005.html) %0Case normalization; cf. RFC3986 section 6.2.2.1 7 NOTE: authority case normalization is not performed &4Encoding normalization; cf. RFC3986 section 6.2.2.2 '8Path segment normalization; cf. RFC3986 section 6.2.2.4 {[ \] Y^_`abcdefghijklmnopqrstuvwxyz{|}~ a predicate which returns  & if the character should be escaped the string to process the resulting URI string !"#$%&'()*+,-./01  !"#$%&'()*+,-./01  #"$ !%&'()*+,-./0q[ \] Y^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0 Safe-Inferred None1Host byte order. 2Network byte order. ;Address families. FA constructor being present here does not mean it is supported by the  operating system: see . }Socket Types. DThe existence of a constructor does not necessarily imply that that . socket type is supported on your system: see . ~SOCK_SEQPACKET  SOCK_RDM  SOCK_RAW  SOCK_DGRAM  SOCK_STREAM *0, used in getAddrInfo hints, for example GDoes the SOCK_ constant corresponding to the given SocketType exist on  this system? ?Find the SOCK_ constant corresponding to the SocketType value. Try packSocketType'4 on the SocketType, if it fails throw an error with  message starting Network.Socket. ++ the String parameter BTry unpackSocketType on the CInt, if it fails throw an error with  message starting Network.Socket. ++ the String parameter FDoes the AF_ constant corresponding to the given family exist on this  system? :Computes the storage requirements (in bytes) of the given  3. This function differs from  # in that the value of the argument is used. <Computes the storage requirements (in bytes) required for a  3 with the given ;. Use a 3* with a function requiring a pointer to a  3 and the length of that 3.  Create a new 3% for use with a function requiring a  pointer to a 3 and the length of that 3. Write the given 3 to the given memory location. Read a 3! from the given memory location. Zero a structure. 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~r123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3123654789:;A|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<}~portable provisionallibraries@haskell.orgNone Throw an . corresponding to the current socket error if # the IO action returns a result of -1, but retries in case of an D interrupted operation. Checks for operations that would block and > executes an alternative action before retrying in that case.  Throw an . corresponding to the current socket error if # the IO action returns a result of -1, but retries in case of an  interrupted operation.  Throw an . corresponding to the current socket error if # the IO action returns a result of -1. Discards the result of the ! IO action after error handling.  Throw an , corresponding to the current socket error. Like 1, but the error code is supplied as an argument. @On Windows, do not use errno. Use a system error code instead. Like , but if the action fails with   EWOULDBLOCK3 or similar, wait for the socket to be read-ready,  and try again. Like , but if the action fails with   EWOULDBLOCK4 or similar, wait for the socket to be write-ready,  and try again. AOn Windows operating systems, the networking subsystem has to be initialised using & before any networking operations can be used. eg.  ! main = withSocketsDo $ do {...} EAlthough this is only strictly necessary on Windows platforms, it is Gharmless on other platforms, so for portability it is good practice to use it all the time. $textual description of the location (action to execute before retrying if an  immediate retry would block the  operation to be executed $textual description of the location the  operation to be executed $textual description of the location the  operation to be executed *textual description of the error location [123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|[21879:3654;|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<portable provisionallibraries@haskell.orgNoneB-Flags that control the querying behaviour of . Socket options for use with  and . GThe existence of a constructor does not imply that the relevant option " is supported on your system: see   IPV6_V6ONLY SO_USELOOPBACK  SO_SNDTIMEO  SO_RCVTIMEO  SO_SNDLOWAT  SO_RCVLOWAT  SO_REUSEPORT  SO_LINGER  TCP_CORK  TCP_NODELAY  TCP_MAXSEG IP_TTL  SO_OOBINLINE  SO_KEEPALIVE  SO_RCVBUF  SO_SNDBUF  SO_BROADCAST  SO_DONTROUTE  SO_ERROR SO_TYPE  SO_REUSEADDR  SO_DEBUG Either a host name e.g., " haskell.org" or a numeric host B address string consisting of a dotted decimal IPv4 address or an  IPv6 address e.g., " 192.168.0.1". 2This is the default protocol for a given service. @Create a new socket using the given address family, socket type 5 and protocol number. The address family is usually z,  y, or {. The socket type is usually  or  ". The protocol number is usually .  If y is used, the  socket option is set to 0 < so that both IPv4 and IPv6 can be handled with one socket. ABuild a pair of connected socket objects using the given address C family, socket type, and protocol number. Address family, socket * type, and protocol number are as for the  function above.  Availability: Unix. ?Set the socket to nonblocking, if applicable to this platform. >Bind the socket to an address. The socket must not already be  bound. The ; passed to bind must be the  same as that passed to . If the special port number  6 is passed then the system assigns the next available  use port. 'Connect to a remote socket at address. @Listen for connections made to the socket. The second argument E specifies the maximum number of queued connections and should be at = least 1; the maximum value is system-dependent (usually 5). AAccept a connection. The socket must be bound to an address and 8 listening for connections. The return value is a pair (conn,  address) where conn+ is a new socket object usable to send and % receive data on the connection, and address is the address bound 3 to the socket on the other end of the connection. 9Send data to the socket. The recipient can be specified = explicitly, so the socket need not be in a connected state. E Returns the number of bytes sent. Applications are responsible for ' ensuring that all data has been sent. ANOTE: blocking on Windows unless you compile with -threaded (see  GHC ticket #1129) 9Send data to the socket. The recipient can be specified = explicitly, so the socket need not be in a connected state. E Returns the number of bytes sent. Applications are responsible for ' ensuring that all data has been sent. :Receive data from the socket. The socket need not be in a  connected state. Returns (bytes, nbytes, address) where bytes  is a String of length nbytes$ representing the data received and  address is a 3) representing the address of the sending  socket. ANOTE: blocking on Windows unless you compile with -threaded (see  GHC ticket #1129) @Receive data from the socket, writing it into buffer instead of ? creating a new string. The socket need not be in a connected  state. Returns (nbytes, address) where nbytes is the number of  bytes received and address is a 3 representing the  address of the sending socket. ANOTE: blocking on Windows unless you compile with -threaded (see  GHC ticket #1129) BSend data to the socket. The socket must be connected to a remote = socket. Returns the number of bytes sent. Applications are 7 responsible for ensuring that all data has been sent. BSend data to the socket. The socket must be connected to a remote = socket. Returns the number of bytes sent. Applications are 7 responsible for ensuring that all data has been sent. AReceive data from the socket. The socket must be in a connected E state. This function may return fewer bytes than specified. If the B message is longer than the specified length, it may be discarded C depending on the type of socket. This function may block until a  message arrives. BConsidering hardware and network realities, the maximum number of < bytes to receive should be a small power of 2, e.g., 4096. ?For TCP sockets, a zero length return value means the peer has ) closed its half side of the connection. AReceive data from the socket. The socket must be in a connected E state. This function may return fewer bytes than specified. If the B message is longer than the specified length, it may be discarded C depending on the type of socket. This function may block until a  message arrives. BConsidering hardware and network realities, the maximum number of < bytes to receive should be a small power of 2, e.g., 4096. ?For TCP sockets, a zero length return value means the peer has ) closed its half side of the connection.  Does the  exist on this system? CFor a socket option, return Just (level, value) where level is the F corresponding C option level constant (e.g. SOL_SOCKET) and value is , the option constant itself (e.g. SO_DEBUG) 4 If either constant does not exist, return Nothing. 8Return the option level and option value if they exist, & otherwise throw an error that begins Network.Socket. ++ the String  parameter /Set a socket option that expects an Int value. B There is currently no API to set e.g. the timeval socket options -Get a socket option that gives an Int value. B There is currently no API to get e.g. the timeval socket options 7Returns the processID, userID and groupID of the socket's peer. HOnly available on platforms that support SO_PEERCRED on domain sockets. The IPv4 wild card address. The IPv6 wild card address. /This is the value of SOMAXCONN, typically 128. 3 128 is good enough for normal network servers but , is too small for high performance servers. AShut down one or both halves of the connection, depending on the = second argument to the function. If the second argument is  -, further receives are disallowed. If it is  *, further sends are disallowed. If it is  -, further sends and receives are disallowed. >Close the socket. All future operations on the socket object D will fail. The remote end will receive no more data (after queued  data is flushed). Turns a Socket into an  . By default, the new handle is  unbuffered. Use  to change the buffering. Note that since a ( is automatically closed by a finalizer B when it is no longer referenced, you should avoid doing any more  operations on the  after calling . To  close the  after , call   on the . BPack a list of values into a bitmask. The possible mappings from A value to bit-to-set are given as the first argument. We assume F that each value can cause exactly one bit to be set; unpackBits will % break if this property is not true. (Unpack a bitmask into a list of values. Indicate whether the given  will have any effect on  this system. &Default hints for address lookup with . The values  of the  and  fields are ,  and are never inspected by . 9Resolve a host or service name to one or more addresses.  The + values that this function returns contain 3 & values that you can pass directly to  or  . DThis function is protocol independent. It can return both IPv4 and  IPv6 address information. The 3 argument specifies the preferred query behaviour, C socket options, or protocol. You can override these conveniently  using Haskell's record update syntax on , for example  as follows:   D myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }  Values for ) control query behaviour. The supported  flags are as follows:   AI_PASSIVE If no  value is provided, the network  address in each 3  will be left as a  wild card, i.e. as either   or /. This is useful for server applications that . will accept connections from any client.  AI_CANONNAME The  field of the first returned   will contain the canonical name of the host. AI_NUMERICHOST The  argument must be a numeric B address in string form, and network name lookups will not be  attempted. Note>: Although the following flags are required by RFC 3493, they A may not have an effect on all platforms, because the underlying E network stack may not support them. To see whether a flag from the ' list below will have any effect, call .  AI_NUMERICSERV The  argument must be a port A number in string form, and service name lookups will not be  attempted.  AI_ADDRCONFIG The list of returned  values will B only contain IPv4 addresses if the local system has at least ; one IPv4 interface configured, and likewise for IPv6.  AI_V4MAPPED- If an IPv6 lookup is performed, and no IPv6 = addresses are found, IPv6-mapped IPv4 addresses will be  returned. AI_ALL If , is specified, return all matching IPv6 and : IPv4 addresses. Otherwise, this flag has no effect. You must provide a  value for at least one of the   or  arguments.  can be either a numeric @ network address (dotted quad for IPv4, colon-separated hex for A IPv6) or a hostname. In the latter case, its addresses will be  looked up unless ! is specified as a hint. If you  do not provide a  value and do not set  as E a hint, network addresses in the result will contain the address of  the loopback interface. DIf the query fails, this function throws an IO exception instead of B returning an empty list. Otherwise, it returns a non-empty list  of  values. >There are several reasons why a query might result in several D values. For example, the queried-for host could be multihomed, or 7 the service might be available via several protocols. CNote: the order of arguments is slightly different to that defined  for  getaddrinfo in RFC 2553. The  parameter comes first % to make partial application easier.  Example:   F let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }  addrs <!- getAddrInfo (Just hints) (Just www.haskell.org) (Just http)  let addr = head addrs  sock <E- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr) # connect sock (addrAddress addr)   .Resolve an address to a host or service name. ( This function is protocol independent.  The list of ' values controls query behaviour. The ! supported flags are as follows:   NI_NOFQDN% If a host is local, return only the  hostname part of the FQDN. NI_NUMERICHOST The name of the host is not > looked up. Instead, a numeric representation of the host's ? address is returned. For an IPv4 address, this will be a ? dotted-quad string. For IPv6, it will be colon-separated  hexadecimal. NI_NUMERICSERV The name of the service is not : looked up. Instead, a numeric representation of the  service is returned.  NI_NAMEREQD2 If the hostname cannot be looked up, an IO error  is thrown. NI_DGRAM1 Resolve a datagram-based service name. This is B required only for the few protocols that have different port > numbers for their datagram-based versions than for their  stream-based versions. =Hostname and service name lookups can be expensive. You can . specify which lookups to perform via the two  arguments. If  one of these is *, the corresponding value in the returned  tuple will be X#, and no lookup will be performed. If a host or service'-s name cannot be looked up, then the numeric 2 form of the address or service will be returned. :If the query fails, this function throws an IO exception.  Example:    (hostName, _) <- getNameInfo [] True False myAddress   Deprecated alias for . Deprecated alias for . Deprecated alias for . Deprecated alias for .  Deprecated alias for .  Deprecated alias for .  Deprecated alias for . "preferred socket type or protocol host name to look up service name to look up resolved addresses, with best first "flags to control lookup behaviour whether to look up a hostname "whether to look up a service name the address to look up    123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   ;|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<}~365421879:   j    None portablestablejohan.tibell@gmail.comNoneportablestablejohan.tibell@gmail.comNone  <Send data to the socket. The socket must be connected to a D remote socket. Returns the number of bytes sent. Applications are 7 responsible for ensuring that all data has been sent.  <Send data to the socket. The socket must be connected to a  remote socket. Unlike  ', this function continues to send data D until either all data has been sent or an error occurs. On error, C an exception is raised, and there is no way to determine how much & data, if any, was successfully sent. 9Send data to the socket. The recipient can be specified = explicitly, so the socket need not be in a connected state. D Returns the number of bytes sent. Applications are responsible for ' ensuring that all data has been sent. 8Send data to the socket. The recipient can be specified E explicitly, so the socket need not be in a connected state. Unlike  8, this function continues to send data until either all C data has been sent or an error occurs. On error, an exception is E raised, and there is no way to determine how much data, if any, was  successfully sent. <Send data to the socket. The socket must be in a connected B state. The data is sent as if the parts have been concatenated. E This function continues to send data until either all data has been A sent or an error occurs. On error, an exception is raised, and 9 there is no way to determine how much data, if any, was  successfully sent. 9Send data to the socket. The recipient can be specified B explicitly, so the socket need not be in a connected state. The E data is sent as if the parts have been concatenated. This function B continues to send data until either all data has been sent or an B error occurs. On error, an exception is raised, and there is no @ way to determine how much data, if any, was successfully sent. AReceive data from the socket. The socket must be in a connected B state. This function may return fewer bytes than specified. If < the message is longer than the specified length, it may be E discarded depending on the type of socket. This function may block  until a message arrives. KConsidering hardware and network realities, the maximum number of bytes to 3 receive should be a small power of 2, e.g., 4096. ?For TCP sockets, a zero length return value means the peer has ) closed its half side of the connection. ;Receive data from the socket. The socket need not be in a  connected state. Returns (bytes, address) where bytes is a  $ representing the data received and address is a  31 representing the address of the sending socket. ,Suppose we try to transmit a list of chunks cs via a gathering write  operation and find that n bytes were sent. Then remainingChunks n cs is & list of chunks remaining to be sent. totalLength cs5 is the sum of the lengths of the chunks in the list cs. withIOVec cs f executes the computation f, passing as argument a pair I consisting of a pointer to a temporarily allocated array of pointers to   made from cs and the number of pointers ( length cs).   Unix only.    Connected socket  Data to send Number of bytes sent  Connected socket  Data to send Socket  Data to send Recipient address Number of bytes sent Socket  Data to send Recipient address Connected socket  Data to send Socket  Data to send Recipient address Connected socket #Maximum number of bytes to receive Data received  Socket #Maximum number of bytes to receive !Data received and sender address           POSIX, GHC experimentalbos@serpentine.comNoneBSend data to the socket. The socket must be in a connected state. D Returns the number of bytes sent. Applications are responsible for ' ensuring that all data has been sent. Because a lazily generated   may be arbitrarily long, E this function caps the amount it will attempt to send at 4MB. This @ number is large (so it should not penalize performance on fast ? networks), but not outrageously so (to avoid demanding lazily B computed data unnecessarily early). Before being sent, the lazy   ' will be converted to a list of strict  s  with  %; at most 1024 chunks will be sent.  Unix only. <Send data to the socket. The socket must be in a connected C state. This function continues to send data until either all data = has been sent or an error occurs. If there is an error, an E exception is raised, and there is no way to determine how much data  was sent.  Unix only. AReceive data from the socket. The socket must be in a connected C state. Data is received on demand, in chunks; each chunk will be < sized to reflect the amount of data received by individual   calls. BAll remaining data from the socket is consumed. When there is no D more data to be received, the receiving side of the socket is shut D down. If there is an error and an exception is thrown, the socket  is not shut down. AReceive data from the socket. The socket must be in a connected B state. This function may return fewer bytes than specified. If B the received data is longer than the specified length, it may be E discarded depending on the type of socket. This function may block  until a message arrives. :If there is no more data to be received, returns an empty  . Connected socket  Data to send Number of bytes sent Connected socket  Data to send Connected socket Data received Connected socket #Maximum number of bytes to receive Data received  non-portable experimentallibraries@haskell.orgNone 2Get service by name. 3Get the service given a 9 and 1. 4Get the 9 corresponding to the . A Resolve a  to IPv4 address. BGet a  0 corresponding to the given address and family. - Note that only IPv4 is currently supported. J8Open the network name database. The parameter specifies 9 whether a connection is maintained open between various  networkEntry calls K3Close the connection to the network name database. L!Get the list of network entries. MCCalling getHostName returns the standard host name for the current ! processor, as set at boot time. T !"#$%&'()*+,-./01 !"23456789:;<=>?@ABCDEFGHIJKL#$M%&'()*+;9 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM;M !"#$%AB@FDCE+,-./023485671&'()*9:;?=<>9GHLJIKA !"#$%&'()*+,-./01 !"23456789:;<=>?@ABCDEFGHIJKL#$M%&'()*+portable provisionallibraries@haskell.orgNoneRCalling R' creates a client side socket which is H connected to the given host and port. The Protocol and socket type is D derived from the given port identifier. If a port number is given . then the result is always an internet family  socket. S;Creates the server side socket which has been bound to the  specified port. 3 (typically 128) is specified to the listen queue. A This is good enough for normal network servers but is too small  for high performance servers.  To avoid the "Address already in use" problems,  the / socket option is set on the listening socket. If available, the  socket option is set to 0 > so that both IPv4 and IPv6 can be accepted with this socket.  If you don'6t like the behavior above, please use the lower level   instead. T+Accept a connection on a socket created by S . Normal  I/O operations (see  System.IO) can be used on the  * returned to communicate with the client. A Notice that although you can pass any Socket to Network.accept, @ only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work  (this shouldn'6t be a problem, though). When using AF_UNIX, HostName = will be set to the path of the socket and PortNumber to -1. W Returns the N! associated with a given socket. NOPQR,SPort Identifier Listening Socket -TListening Socket Triple of: read/write  for  communicating with the client,  the  of the peer socket, and  the 9 of the remote connection. UVW.computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between /09NOPQRSTUVWNQPO9STRUVW NQPOR,S-TUVW./01    !"#$%&'()*+,-./0123456789: ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                !!"#$%&&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMCNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~UV   Q                         QUVQQQQQRUV                !"#$%&'()*+,-./01network-2.4.1.0 Network.URINetwork.Socket.InternalNetwork.SocketNetwork.Socket.ByteStringNetwork.Socket.ByteString.Lazy Network.BSDNetworkNetwork.Socket.ByteString.IOVecNetwork.Socket.Types Network.Socket.ByteString.MsgHdr"Network.Socket.ByteString.InternalURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentnullURIparseURIparseURIReferenceparseRelativeReferenceparseAbsoluteURIisURIisURIReferenceisRelativeReference isAbsoluteURI isIPv6address isIPv4address uriIsAbsolute uriIsRelative isReserved isUnreserved uriToStringisAllowedInURIisUnescapedInURIisUnescapedInURIComponent escapeURICharescapeURIStringunEscapeStringnonStrictRelativeTo relativeTo relativeFrom normalizeCasenormalizeEscapenormalizePathSegmentsparseabsoluteURI escapeStringreserved unreservedscheme authoritypathqueryfragment HostAddress6 HostAddressSockAddr SockAddrUnix SockAddrInet6 SockAddrInetScopeIDFlowInfo PortNumberPortNumFamily AF_BLUETOOTH AF_WANPIPEAF_PPPOXAF_IRDA AF_ATMSVC AF_ECONETAF_ASH AF_PACKET AF_SECURITY AF_NETBEUIAF_ROSE AF_ATMPVC AF_BRIDGE AF_NETROMAF_RIFAF_RAWAF_LINKAF_ENCAPPseudo_AF_HDRCMPLTAF_ARPAF_NATM Pseudo_AF_KEYAF_ISDNAF_SIP Pseudo_AF_PIPPseudo_AF_RTIPAF_CNTAF_COIPAF_INTFAF_NDD AF_NETWAREAF_SDLAF_WANAF_CTF Pseudo_AF_XTPAF_IPX AF_GOSSIP AF_OSINETAF_AX25AF_X25 AF_NETMANAF_OSIAF_ISOAF_802AF_NIT AF_NETBIOSAF_ROUTE AF_APPLETALK AF_HYLINKAF_LATAF_DLI AF_DECnetAF_SNAAF_CCITT AF_DATAKITAF_ECMAAF_NBSAF_NSAF_CHAOSAF_PUP AF_IMPLINKAF_INET6AF_INETAF_UNIX AF_UNSPEC SocketType SeqPacketRDMRawDatagramStream NoSocketType SocketStatusClosedConvertedToHandle Connected ListeningBound NotConnectedProtocolNumberSocketMkSocketisSupportedSocketTypepackSocketType packFamilyisSupportedFamily unpackFamilysizeOfSockAddrsizeOfSockAddrByFamily withSockAddrwithNewSockAddr pokeSockAddr peekSockAddr zeroMemory%throwSocketErrorIfMinus1RetryMayBlockthrowSocketErrorIfMinus1RetrythrowSocketErrorIfMinus1_throwSocketErrorthrowSocketErrorCodethrowSocketErrorWaitReadthrowSocketErrorWaitWrite withSocketsDo NameInfoFlagNI_NUMERICSERVNI_NUMERICHOST NI_NOFQDN NI_NAMEREQDNI_DGRAMAddrInfo addrFlags addrFamilyaddrSocketType addrProtocol addrAddress addrCanonName AddrInfoFlag AI_V4MAPPED AI_PASSIVEAI_NUMERICSERVAI_NUMERICHOST AI_CANONNAMEAI_ALL AI_ADDRCONFIG ShutdownCmd ShutdownBoth ShutdownSendShutdownReceive SocketOptionIPv6Only UseLoopBack SendTimeOut RecvTimeOut SendLowWater RecvLowWater ReusePortLingerCorkNoDelay MaxSegment TimeToLive OOBInline KeepAlive RecvBuffer SendBuffer Broadcast DontRouteSoErrorType ReuseAddrDebug ServiceNameHostNamemkSocketfdSocketdefaultProtocolsocket socketPairbindconnectlistenacceptsendTo sendBufTorecvFrom recvBufFromsendsendBufrecvrecvLenrecvBuf socketPort getPeerName getSocketNameisSupportedSocketOptionsetSocketOptiongetSocketOption getPeerCredsendFdrecvFdaNY_PORT iNADDR_ANY iN6ADDR_ANY sOMAXCONN sOL_SOCKET sCM_RIGHTSmaxListenQueueshutdownclose isConnectedisBound isListening isReadable isWritable inet_addr inet_ntoasocketToHandleaddrInfoFlagImplemented defaultHints getAddrInfo getNameInfo bindSocketsClose sIsConnectedsIsBound sIsListening sIsReadable sIsWritablesendAll sendAllTosendMany sendManyTo getContents NetworkEntry networkNamenetworkAliases networkFamilynetworkAddress NetworkName NetworkAddr HostEntryhostName hostAliases hostFamily hostAddresses ProtocolEntry protoName protoAliases protoNumber ServiceEntry serviceNameserviceAliases servicePortserviceProtocol ProtocolNamegetServiceByNamegetServiceByPortgetServicePortNumbergetServiceEntrysetServiceEntryendServiceEntrygetServiceEntriesgetProtocolByNamegetProtocolByNumbergetProtocolNumbergetProtocolEntrysetProtocolEntryendProtocolEntrygetProtocolEntries hostAddress getHostByName getHostByAddr getHostEntry setHostEntry endHostEntrygetHostEntriesgetNetworkByNamegetNetworkByAddrgetNetworkEntrysetNetworkEntryendNetworkEntrygetNetworkEntries getHostNamePortID UnixSocketService connectTolistenOnbase Data.MaybeNothingtestURIReferenceghc-prim GHC.TypesTrue URIParserdefaultUserInfoMaptestDefaultUserInfoMap parseURIAny isValidParseparseAllescaped isGenDelims isSubDelims genDelims subDelimsunreservedCharurihierPartuscheme uauthorityuserinfohost ipLiteral ipvFutureisIpvFutureChar ipv6address opt_n_h4c_h4ls32h4ch4 ipv4addressdecOctetregNameport pathAbEmptypathAbs pathNoScheme pathRootLess slashSegmentsegment segmentNz segmentNzcpcharucharuquery ufragment uriReference relativeRef relativePart absoluteURI isAlphaChar isDigitCharisAlphaNumCharisHexDigitChar isSchemeChar alphaChar digitChar alphaNumChar hexDigitChar oneThenMany countMinMax notMatchinguriAuthToStringutf8EncodeCharFalse isDefinedremoveDotSegmentselimDots nextSegment splitLast relPathFrom relPathFrom1 relSegsFrom difSegsFrom traceShowtraceValorNull $fShowURIIOVeciovBaseiovLen$fStorableIOVecpackSocketType'packSocketTypeOrThrowunpackSocketType'Foreign.StorablesizeOf CSaFamilymemsethtonsntohssockFd sockFamilysockType sockProtocol sockStatusunpackSocketType packFamily'intToPortNumberportNumberToInts6_addr_offsetpeek32poke32$fStorable(,,,)$fStorablePortNumber$fIntegralPortNumber$fRealPortNumber$fNumPortNumber$fEnumPortNumber$fShowPortNumber $fShowSocket $fEqSocketGHC.IO.ExceptionIOErrorIOsetNonBlockIfNeededpackSocketOptionpackSocketOption'GHC.IO.Handle.TypesHandle GHC.IO.Handle hSetBufferinghClosepackBits unpackBitsGHC.Err undefinedJustBool c_setsockopt c_getsockopt c_getsockname c_getpeername c_recvfromc_recvc_sendtoc_sendc_listen c_accept4c_accept c_connectc_bindc_socketc_close c_shutdown c_inet_addr c_inet_ntoa c_getnameinfoc_gai_strerrorc_freeaddrinfo c_getaddrinfohtonlc_recvFdc_sendFd c_socketpair recvLenBuf sdownCmdToInt isAcceptable aiFlagMapping niFlagMappingfollowAddrInfo gai_strerror withCStringIfmkInvalidRecvArgError mkEOFErrorcloseFd$fStorableAddrInfo$fShowSockAddrMsgHdrmsgName msgNameLenmsgIov msgIovLen$fStorableMsgHdr c_sendmsgc_writevbytestring-0.10.0.0Data.ByteString.Internal ByteStringremainingChunks totalLength withIOVec recvInnerData.ByteString.Lazy.InternalData.ByteString.LazytoChunks c_gethostname c_endnetent c_setnetent c_getnetentc_getnetbyaddrc_getnetbyname c_endhostent c_sethostent c_gethostentc_gethostbyaddrc_gethostbyname c_endprotoent c_setprotoent c_getprotoentc_getprotobynumberc_getprotobyname c_endservent c_setservent c_getserventc_getservbyportc_getservbynamelockwithLock getEntries trySysCallthrowNoSuchThingIfNull$fStorableNetworkEntry$fStorableHostEntry$fStorableProtocolEntry$fStorableServiceEntryconnect'listen'bracketOnErrorcatchIOfirstSuccessful