summaryrefslogtreecommitdiff
path: root/src/inspsocket.cpp
AgeCommit message (Collapse)Author
2009-09-26Clean up SocketEngine interface to allow edge-triggered I/O and sockets that ↵danieldg
do not force readability. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11760 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-21Improve speed of SSL sendq processingdanieldg
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11756 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-21Don't try to write to dead users, add debug to SquitServer, and remove a ↵danieldg
string copy in spanningtree write git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11753 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-21Create StreamSocket for IO hooking implementationdanieldg
Fixes the SSL SendQ bug Removes duplicate code between User and BufferedSocket Simplify SSL module API Simplify EventHandler API (Readable/Writeable moved to SE) Add hook for culled objects to invoke callbacks prior to destructor Replace SocketCull with GlobalCull now that sockets can close themselves Shorten common case of user read/parse/write path: User::Write is now zero-copy up to syscall/SSL invocation User::Read has only two copy/scan passes from read() to ProcessCommand git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11752 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-13Change Extensible to use strongly typed entriesdanieldg
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11696 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-01Use sa_size() rather than sizeof() when passing input parameters to a syscalldanieldg
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11583 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-01Remove unneeded #ifdef IPV6 linesdanieldg
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11582 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-01Move IP<->sockaddr conversions into irc::sockets:: namespacedanieldg
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11580 e03df62e-2008-0410-955e-edbf42e46eb7
2009-09-01Remove needless sockaddr[2] allocations, replace with ↵danieldg
irc::sockets::sockaddrs union git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11574 e03df62e-2008-0410-955e-edbf42e46eb7
2009-06-16Fix sockaddr length argument, BSD will complain if it doesn't exactly match ↵danieldg
the expected size git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11414 e03df62e-2008-0410-955e-edbf42e46eb7
2009-06-14Backport BufferedSocket::DoConnect rewrite to fix valgrind warningdanieldg
Syscall param socketcall.connect(serv_addr..sin6_flowinfo) points to uninitialised byte(s) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11411 e03df62e-2008-0410-955e-edbf42e46eb7
2009-04-30Fix bug found by Jeremy from Teranova, thanks: if an explicit bind to an IP ↵w00t
is not made, don't assume all <bind> tags are for ipv6 IPs on an IPv6 compile (WTF). git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11342 e03df62e-2008-0410-955e-edbf42e46eb7
2009-03-15Update all wiki links to point to the new wiki. This was done automatically ↵psychon
with the following command, only .Makefile.inc got some indent fixups by hand. for file in $(find -type f -and -not -path '*/.svn/*' -and -not -name '*.so') ; do sed -e 's#http://www.inspircd.org/wiki#http://wiki.inspircd.org#' -e 's#http://wiki.inspircd.org/index.php/#http://wiki.inspircd.org/#' -i $file ; done git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11223 e03df62e-2008-0410-955e-edbf42e46eb7
2009-03-09Rewrite BufferedSocket::BindAddr to actually make sense, and not infinite ↵w00t
loop under some conditions, etc. This also splits a lot of it into DoBindMagic(), for readability. Seems to work okay on an invalid bind and nonexistant bind.. Fixes bug #754, reported by HiroP and Indoril. Fix FD leak in some circumstances: if bind fails hard (requested address couldn't be bound), Close() the socket. Also fixes a deficiency of the previous commit in that if one address failed to bind, the FD would be invalidated. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11189 e03df62e-2008-0410-955e-edbf42e46eb7
2009-02-03Fix minor memory leak, patch by Darom. Closes bug #699. Thanks!`w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11025 e03df62e-2008-0410-955e-edbf42e46eb7
2009-01-02Update copyrights for 2009.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10932 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-21Be consistent. Use ServerInstance in all places instead of 'Instance' in ↵w00t
half. This has bugged me forever :p. I think I got all of extra/ too.. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10579 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-12Cleanup of some internals. Tested via m_httpd.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10527 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Remove some duplication, everything calls the SE equivilant anyway.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10525 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Remove useless parameter.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10524 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Minor stylistic improvements.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10515 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Fix a compile oops.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10513 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11There is absolutely no need to cache connect timeout.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10512 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Remove an unused member.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10511 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Windows doesn't need blocking connect, IOCP was the cause of that.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10510 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-11Remove WaitingForWriteEvent, it seems to do *nothing* except confuse things. ↵w00t
Also, don't close socket on http if FlushWriteBuf doesn't write it all in one go, in fact, don't try FlushWriteBuf at all - use the sockets default of waiting to be told it's safe to write data. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10509 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-09Remove a totally redundant method (this is already available via inheritance ↵w00t
from EventHandler) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10490 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-08Remove listening from BufferedSocket, it's bloaty and horrid. We have a ↵w00t
ListenSocketBase class to handle this instead now. :) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10470 e03df62e-2008-0410-955e-edbf42e46eb7
2008-09-07Move socket hooking in inspsocket to utilise the new system properly.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10449 e03df62e-2008-0410-955e-edbf42e46eb7
2008-07-29Remove last vestige of libircdfoo, by changing tag into a single ↵w00t
identifier marking object as requiring compilation into a .o (minor commit) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10076 e03df62e-2008-0410-955e-edbf42e46eb7
2008-07-19Fix the 4-byte read madness discovered by psychonbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10045 e03df62e-2008-0410-955e-edbf42e46eb7
2008-07-12Remove individual read buffers inside of BufferedSocket, use the shared ↵w00t
netbuffer instead, like users. This means a 65kb saving per BufferedSocket. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9960 e03df62e-2008-0410-955e-edbf42e46eb7
2008-07-02Fix an off-by-one which could possibly perhaps cause djGrrr/satmd's bug by ↵w00t
dropping a read buffer into the bit bucket if it was of an exact enough size to cause problems. No guarentees. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9944 e03df62e-2008-0410-955e-edbf42e46eb7
2008-05-19Listening bufferedsockets dont have an OnRawSocketClose event as theyre ↵brain
never 'opened' git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9773 e03df62e-2008-0410-955e-edbf42e46eb7
2008-04-01Remove call to FlushWriteBuffer from BufferedSocket::Write(), this means we ↵w00t
don't try write() pointlessly when we may very well not (chewing CPU), and instead waits for the socketengine to tell us we can write. Tested, works fine. (nothing used this return value anyway) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9247 e03df62e-2008-0410-955e-edbf42e46eb7
2008-04-01Remove deprecated BufferedSocket::MarkAsClosed()w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9246 e03df62e-2008-0410-955e-edbf42e46eb7
2008-02-22Convert remaining InspIRCd::Log() calls to new logging systemaquanight
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9001 e03df62e-2008-0410-955e-edbf42e46eb7
2008-02-13Commit patch from danieldg that makes a ton of stuff const-safe for latest ↵brain
warn-happy trigger-happy gcc4 (thanks) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8922 e03df62e-2008-0410-955e-edbf42e46eb7
2008-02-11Add -Wshadow to cflags, and fix a bunch of warnings that come with it. Add a ↵w00t
note to webirc that needs looking at. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8892 e03df62e-2008-0410-955e-edbf42e46eb7
2008-01-14IPv6 fix, thanks to danieldg. Doesn't affect 1.1.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8709 e03df62e-2008-0410-955e-edbf42e46eb7
2008-01-10Header update: 2007 -> 2008w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8694 e03df62e-2008-0410-955e-edbf42e46eb7
2007-11-12Argh, i give upbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8594 e03df62e-2008-0410-955e-edbf42e46eb7
2007-11-12NOTE: our stuff for parsing multiple dns replies for dnsbl with an 'A record ↵brain
reply' is broken. We will fix this at some later date. It was breaking other stuff git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8591 e03df62e-2008-0410-955e-edbf42e46eb7
2007-11-11This works with multiple remote includes now except it hangs when an include ↵brain
is within an include git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8590 e03df62e-2008-0410-955e-edbf42e46eb7
2007-11-01Comment a message out that people regularly attempt to interpretw00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8453 e03df62e-2008-0410-955e-edbf42e46eb7
2007-10-23Pedantic safebrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8317 e03df62e-2008-0410-955e-edbf42e46eb7
2007-10-22Remove the need for a bunch of the hard coded arrays/hashes by scanning the ↵brain
src/ dir for tag comments, like in modules git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8307 e03df62e-2008-0410-955e-edbf42e46eb7
2007-10-15InspSocket -> BufferedSocket. Paves the way for a SimpleSocket class which ↵w00t
ident etc will use. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8206 e03df62e-2008-0410-955e-edbf42e46eb7
2007-10-13Fix potential for ssl to block, based on patch submitted by djGrrr, adjusted ↵brain
for trunk new socket engine, thanks git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8154 e03df62e-2008-0410-955e-edbf42e46eb7
2007-09-13Fixed a rare infinite loop in InspSocket::FlushWriteBuffer() - this could ↵special
only affect a few rarely used modules, and is difficult to trigger. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8031 e03df62e-2008-0410-955e-edbf42e46eb7