mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +01:00

This clears up a couple of issues with client connect. - if CLIENT_CONNECTION_ERROR is coming, which of the many ways the rejection may have happened is documented in the in argument. It's still possible if it just got hung up on in will be NULL, but now it has MANY more canned strings describing the issue available at the callback "getaddrinfo (ipv6) failed" "unknown address family" "getaddrinfo (ipv4) failed" "set socket opts failed" "insert wsi failed" "lws_ssl_client_connect1 failed" "lws_ssl_client_connect2 failed" "Peer hung up" "read failed" "HS: URI missing" "HS: Redirect code but no Location" "HS: URI did not parse" "HS: Redirect failed" "HS: Server did not return 200" "HS: OOM" "HS: disallowed by client filter" "HS: disallowed at ESTABLISHED" "HS: ACCEPT missing" "HS: ws upgrade response not 101" "HS: UPGRADE missing" "HS: Upgrade to something other than websocket" "HS: CONNECTION missing" "HS: UPGRADE malformed" "HS: PROTOCOL malformed" "HS: Cannot match protocol" "HS: EXT: list too big" "HS: EXT: failed setting defaults" "HS: EXT: failed parsing defaults" "HS: EXT: failed parsing options" "HS: EXT: Rejects server options" "HS: EXT: unknown ext" "HS: Accept hash wrong" "HS: Rejected by filter cb" "HS: OOM" "HS: SO_SNDBUF failed" "HS: Rejected at CLIENT_ESTABLISHED" - until now the user code did not get the new wsi that was created in the client connection action until it returned. However the client connection action may provoke callbacks like CLIENT_CONNECTION_ERROR before then, if multiple client connections are initiated it makes it unknown to user code which one the callback applies to. The wsi is provided in the callback but it has not yet returned from the client connect api to give that wsi to the user code. To solve that there is a new member added to client connect info struct, pwsi, which lets you pass a pointer to a struct wsi * in the user code that will get filled in with the new wsi. That happens before any callbacks could be provoked, and it is updated to NULL if the connect action fails before returning from the client connect api.
372 lines
18 KiB
HTML
372 lines
18 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.11"/>
|
|
<title>libwebsockets: lws_client_connect_info Struct Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
$(window).load(resizeHeight);
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="libwebsockets.org-logo.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">libwebsockets
|
|
</div>
|
|
<div id="projectbrief">Lightweight C library for HTML5 websockets</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.11 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="classes.html"><span>Data Structure Index</span></a></li>
|
|
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('structlws__client__connect__info.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#pub-attribs">Data Fields</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">lws_client_connect_info Struct Reference<div class="ingroups"><a class="el" href="group__client.html">Client</a></div></div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p><code>#include <<a class="el" href="libwebsockets_8h_source.html">libwebsockets.h</a>></code></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
|
|
Data Fields</h2></td></tr>
|
|
<tr class="memitem:afe999d133cc240a0bfd02aade0514cfd"><td class="memItemLeft" align="right" valign="top">struct lws_context * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd">context</a></td></tr>
|
|
<tr class="separator:afe999d133cc240a0bfd02aade0514cfd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa364094f94ef1bcaaabbd9161971d502"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502">address</a></td></tr>
|
|
<tr class="separator:aa364094f94ef1bcaaabbd9161971d502"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1af124d81c3c22a46d39387c5bc3d6b9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9">port</a></td></tr>
|
|
<tr class="separator:a1af124d81c3c22a46d39387c5bc3d6b9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9862297827639238a7a0b4054c3ddf3d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d">ssl_connection</a></td></tr>
|
|
<tr class="separator:a9862297827639238a7a0b4054c3ddf3d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a76a8388733f114fb8fd3643874781185"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185">path</a></td></tr>
|
|
<tr class="separator:a76a8388733f114fb8fd3643874781185"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9b36d47c3422329df32c21040a35ebc7"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7">host</a></td></tr>
|
|
<tr class="separator:a9b36d47c3422329df32c21040a35ebc7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8595f83e64147cb687b6418cf500dd4c"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c">origin</a></td></tr>
|
|
<tr class="separator:a8595f83e64147cb687b6418cf500dd4c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aba35adfb74845a5fd0c3dc141cbdddd2"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2">protocol</a></td></tr>
|
|
<tr class="separator:aba35adfb74845a5fd0c3dc141cbdddd2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a69abb5aeed755750b9755e5c91db6895"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895">ietf_version_or_minus_one</a></td></tr>
|
|
<tr class="separator:a69abb5aeed755750b9755e5c91db6895"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9831b9f9ab54a1aec4bb15324f1c3836"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836">userdata</a></td></tr>
|
|
<tr class="separator:a9831b9f9ab54a1aec4bb15324f1c3836"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7732b996e977393c3e1076be2a8ded6c"><td class="memItemLeft" align="right" valign="top">const struct <a class="el" href="structlws__extension.html">lws_extension</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c">client_exts</a></td></tr>
|
|
<tr class="separator:a7732b996e977393c3e1076be2a8ded6c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa9e8e3da4e783a0651b0dea62c2dd1db"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db">method</a></td></tr>
|
|
<tr class="separator:aa9e8e3da4e783a0651b0dea62c2dd1db"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6843a60e1050b10db9d98d7eeb45f587"><td class="memItemLeft" align="right" valign="top">struct lws * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587">parent_wsi</a></td></tr>
|
|
<tr class="separator:a6843a60e1050b10db9d98d7eeb45f587"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a03c305fdca809667b6a9a83b3edfd83a"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a">uri_replace_from</a></td></tr>
|
|
<tr class="separator:a03c305fdca809667b6a9a83b3edfd83a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9959ba103d3d2484e559a9f7879eebe3"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3">uri_replace_to</a></td></tr>
|
|
<tr class="separator:a9959ba103d3d2484e559a9f7879eebe3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3893181d728f326f9f5b47c1459cb8be"><td class="memItemLeft" align="right" valign="top">struct lws_vhost * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be">vhost</a></td></tr>
|
|
<tr class="separator:a3893181d728f326f9f5b47c1459cb8be"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a065063b5117ecd0a59567c97f04bda2e"><td class="memItemLeft" align="right" valign="top">struct lws ** </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e">pwsi</a></td></tr>
|
|
<tr class="separator:a065063b5117ecd0a59567c97f04bda2e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad47f50d1633dc5df74548606c9a66d73"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73">_unused</a> [4]</td></tr>
|
|
<tr class="separator:ad47f50d1633dc5df74548606c9a66d73"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>struct <a class="el" href="structlws__client__connect__info.html">lws_client_connect_info</a> - parameters to connect with when using <a class="el" href="group__client.html#ga0c966136905f467816307cfba6deb5fd">lws_client_connect_via_info()</a> </p>
|
|
</div><h2 class="groupheader">Field Documentation</h2>
|
|
<a class="anchor" id="ad47f50d1633dc5df74548606c9a66d73"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void* lws_client_connect_info::_unused[4]</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>dummy </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa364094f94ef1bcaaabbd9161971d502"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::address</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>remote address to connect to </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a7732b996e977393c3e1076be2a8ded6c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const struct <a class="el" href="structlws__extension.html">lws_extension</a>* lws_client_connect_info::client_exts</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>array of extensions that may be used on connection </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="afe999d133cc240a0bfd02aade0514cfd"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct lws_context* lws_client_connect_info::context</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>lws context to create connection in </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9b36d47c3422329df32c21040a35ebc7"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::host</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>content of host header </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a69abb5aeed755750b9755e5c91db6895"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int lws_client_connect_info::ietf_version_or_minus_one</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>deprecated: currently leave at 0 or -1 </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aa9e8e3da4e783a0651b0dea62c2dd1db"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::method</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>if non-NULL, do this http method instead of ws[s] upgrade. use "GET" to be a simple http client connection </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a8595f83e64147cb687b6418cf500dd4c"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::origin</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>content of origin header </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a6843a60e1050b10db9d98d7eeb45f587"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct lws* lws_client_connect_info::parent_wsi</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>if another wsi is responsible for this connection, give it here. this is used to make sure if the parent closes so do any child connections first. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a76a8388733f114fb8fd3643874781185"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::path</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>uri path </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a1af124d81c3c22a46d39387c5bc3d6b9"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int lws_client_connect_info::port</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>remote port to connect to </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aba35adfb74845a5fd0c3dc141cbdddd2"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::protocol</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>list of ws protocols we could accept </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a065063b5117ecd0a59567c97f04bda2e"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct lws** lws_client_connect_info::pwsi</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>if not NULL, store the new wsi here early in the connection process. Although we return the new wsi, the call to create the client connection does progress the connection somewhat and may meet an error that will result in the connection being scrubbed and NULL returned. While the wsi exists though, he may process a callback like CLIENT_CONNECTION_ERROR with his wsi: this gives the user callback a way to identify which wsi it is that faced the error even before the new wsi is returned and even if ultimately no wsi is returned. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9862297827639238a7a0b4054c3ddf3d"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int lws_client_connect_info::ssl_connection</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>nonzero for ssl </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a03c305fdca809667b6a9a83b3edfd83a"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::uri_replace_from</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>if non-NULL, when this string is found in URIs in text/html content-encoding, it's replaced with uri_replace_to </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9959ba103d3d2484e559a9f7879eebe3"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* lws_client_connect_info::uri_replace_to</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>see uri_replace_from </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9831b9f9ab54a1aec4bb15324f1c3836"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void* lws_client_connect_info::userdata</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>if non-NULL, use this as wsi user_data instead of malloc it </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a3893181d728f326f9f5b47c1459cb8be"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct lws_vhost* lws_client_connect_info::vhost</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>vhost to bind to (used to determine related SSL_CTX) </p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this struct was generated from the following file:<ul>
|
|
<li>lib/<a class="el" href="libwebsockets_8h_source.html">libwebsockets.h</a></li>
|
|
</ul>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="structlws__client__connect__info.html">lws_client_connect_info</a></li>
|
|
<li class="footer">Generated by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|