GithubHelp home page GithubHelp logo

ircdotnet / ircdotnet Goto Github PK

View Code? Open in Web Editor NEW
196.0 13.0 75.0 3.08 MB

IRC.NET is a complete IRC (Internet Relay Chat) client library for .NET.

Home Page: https://ircdotnet.github.io/IrcDotNet/

License: MIT License

C# 100.00%
irc protocol internet-relay-chat c-sharp dot-net

ircdotnet's Introduction

IRC.NET

forthebadge

Build Status Build status NuGet

Overview

IRC.NET is a complete IRC (Internet Relay Chat) client library for the .NET Framework. It aims to provide a complete and efficient implementation of the protocol as described in RFCs 1459 and 2812, as well as de-facto modern features of the protocol.

This project was formerly hosted on Launchpad.

Non-RFC Features

Help

  • If you have confirmed that the behaviour is unexpected, submit an issue on GitHub.

ircdotnet's People

Contributors

alexreg avatar chrboe avatar darkkilauea avatar felk avatar matthid avatar oreleraki avatar paralin avatar ransagy avatar skittles1 avatar twostars avatar txdv avatar w0rd-driven avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ircdotnet's Issues

Change IRC commands to uppercase(?)

When implementing #37, I noticed that the library currently sends all IRC commands in lowercase. The spec uses uppercase commands in all examples, and most implementations send commands in uppercase. I therefore suggest changing all of the commands to uppercase (I'd be happy to contribute a PR for this if it is confirmed that this doesn't raise any ideological concerns)

Build error

Getting this error when I try to run the build script. Not sure what is causing it. Seems to be git related as that is what is thrown everywhere in the code. I have the latest version of git, so not sure what is going on.

Resolve build dependencies
All packages listed in packages.config are already installed.
Starting build
git.exe rev-parse HEAD

F# Interactive for F# 3.1 (private)
Freely distributed under the Apache 2.0 Open Source License

For help type #help;;

[Loading C:\Users\Tyler\Desktop\IrcDotNet-develop\buildConfig.fsx
Loading C:\Users\Tyler\Desktop\IrcDotNet-develop\build.fsx]

System.TypeInitializationException: The type initializer for '<StartupCode$FSI_0001>.$FSI_0001_BuildConfig$fsx' threw an
exception. ---> System.Exception: Could not run "git rev-parse HEAD".
Error: Start of process git.exe failed. The system cannot find the file specified
at [email protected](String message) in D:\code\fake\src\app\FakeLib\Git\Command
Helper.fs:line 89
at Fake.Git.CommandHelper.runSimpleGitCommand(String repositoryDir, String command) in D:\code\fake\src\app\FakeLib\G
it\CommandHelper.fs:line 89
at Fake.Git.Branches.getSHA1(String repositoryDir, String commit) in D:\code\fake\src\app\FakeLib\Git\Branches.fs:lin
e 32
at <StartupCode$FSI_0001>.$FSI_0001_BuildConfig$fsx..cctor() in C:\Users\Tyler\Desktop\IrcDotNet-develop\buildConfig.
fsx:line 38
--- End of inner exception stack trace ---
at <StartupCode$FSI_0001>.$FSI_0001_Build$fsx.main@() in C:\Users\Tyler\Desktop\IrcDotNet-develop\build.fsx:line 38
Stopped due to error

ONOTICE crash

There's a crash that happens when an ONOTICE is sent to a channel that an IrcClient is in. I'm not sure if it's a server-specific things, but on SwiftIRC, ONOTICEs send a NOTICE @#SwiftChannel , which causes IrcDotNet to throw

Unhandled Exception: System.ArgumentException: The source '@#SwiftChannel' of the message was not recognised as either a server or user.

Identifier

Hi All.

I'm looking for a way to identify anyone with my irc client in a channel. In IceChat they have an Ident name field which shows up in the nick list. See image.

Does IrcDotNet have anything similar? When I login to a channel using my client I see my username@ipaddress at the moment. Is that the Ctcp.ClientVersion field.

icechat

Refactoring

I'd like to propose a general refactor of the code base. For example, the fact that functions are documented in an inline fashion - don't get me wrong, that's generally a good thing - can lead to some files being huge (take IrcClient.cs, 2064 lines). Some of this unnecessary length can be avoided imo, e.g. by moving classes (like IrcMessage) to separate files.

I'd be happy to tackle this btw, I'm just waiting for maintainer approval on this.

.NET Core support

Would be great if there was support for .NET Core. The compatibility report I got for the current code says ~96.8% compatibility, and those issues that are there should be relatively easy to fix such that the code can be compiled to .NET Core.

Ctcp Version request

Hi all
A ctcp version request is being interpreted as a message, instead of creating a ctcp version response. I am setting the CtcpClient.ClientVersion string. VERSION is all that is displayed when a version request is received from IceChat.
thanks

version

Sending an invite command not working

Hi,

I'm happy to use this library for connecting to different irc servers. But I want to connect to a channel which is invite based, the invite command looks like:
/msg botname invite XXXXXXXXXXXAAAAXXXX

I have the following code where I tried to send command but no success:

var uri = new Uri(ircUrl, UriKind.Absolute);

IrcUserRegistrationInfo info = new IrcUserRegistrationInfo
{
	NickName = _nick,
	Password = _password,
	RealName = _nick,
	UserName = _nick
};

_client.RawMessageReceived += (s, ev) =>
{
	write(ev.RawContent);
};


_client.Registered += (s, ev) =>
{
        _client.SendRawMessage("/msg bot invite XXXXXXXAAAAAXXXXXXX");
	_client.Channels.Join(_channel);
};

_client.Connect(uri, info);

Seems that msg is unknown command ... how's that ?

How to achieve this ?

Missing Constructor and Connect method

The current Nuget release is missing the constructor:

"Cannot create an instance of the abstract class or interface 'IrcClient'

Using...

IrcClient client = new IrcClient();

The connect method is also missing between:

IrcClient.ClientInfoReceived
IrcClient.Connected

IrcUser.Quit event

Hi All
The IrcUser.Quit event is not always being called leaving me with ghost users in my nicklist. I see in the source that its not always sent. How do you handle the user quits so its accurate?
thanks.

       /// <summary>
        ///     Occurs when the user has quit the network. This may not always be sent.
        /// </summary>
        public event EventHandler<IrcCommentEventArgs> Quit;

Twitch RPL_YOURHOST Crash

When trying to connect to the Twitch IRC servers, an exception is thrown in ProcessMessageReplyYourHost. The reason is that localUser.NickName is incorrectly recognized as GLHF instead of the actual nickname.

Stacktrace:

>   IrcDotNet.dll!IrcDotNet.IrcClient.ProcessMessageReplyYourHost(IrcDotNet.IrcClient.IrcMessage message) Line 324  C#
    IrcDotNet.dll!IrcDotNet.IrcClient.ReadMessage(IrcDotNet.IrcClient.IrcMessage message, string line) Line 1332    C#
    IrcDotNet.dll!IrcDotNet.IrcClient.ParseMessage(string line) Line 1509   C#
    IrcDotNet.dll!IrcDotNet.StandardIrcClient.ReceiveCompleted(object sender, System.Net.Sockets.SocketAsyncEventArgs e) Line 384   C#
    [External Code] 

Edit:

Upon further inspection, the NickName Property gets assigned the bogus value in ProcessMessageReplyWelcome, where it (for some reason) assumes GLHF as the username.

Make StandardIRCClient extensible

StandardIrcClient should have a lot of functions made non-internal so they can be overridden by users.

See TwitchIrcClient as something that wouldn't be possible to be made out-of-tree.

Finish upgrade to dotnet 1.0 and push to NuGet

I previously made attempts to upgrade this package to .NET Core as well as to upgrade the tooling to the latest, as defined by dotnet. The issue is that they decided some time ago to move away from package.json just after everyone had finished migrating to it. During the rc phase of dotnet, each RC version completely broke everything using the previous version, with no easy way of upgrading code between versions without hours and hours of effort, even for something simple like IrcDotNet.

I have not used C# for any new projects since the announcement of moving off of package.json. As such, I'm no longer using IrcDotNet for any of my projects, so updates to this are a bit sparse right now.

If those of you using this package have urgent fixes that need to be released for you to continue work, please feel free to make PRs. I will review them and publish once the necessary work to upgrade everything to dotnet 1.0 is complete.

NuGet out of date

I did a search in NuGet and saw this project. It looks like NuGet is still on version 0.4.1 while the code here is at 0.5.0. Are their plans to keep these in sync?

Fix tests

Before we can start merging PRs, the tests need to be fixed. This issue details that effort.

At minimum I'd like to consolidate on Travis, or at least on a single Ci rather than multiple.

Seeking maintainer(s)

I've dreamed of having enough spare time to bring this repo up to date for a long time. Unfortunately, both my personal work and my professional work has moved completely away from C#, and I haven't used it in over a year. For this reason I have not had the opportunity to update this package in quite some time.

Looking for one or more community members using this package that would be interested in adopting this package.

CI, docs and build script

Good to see that the project is still kind of alive 👍 .
If you want to move the project forward I would suggest to add a build system (I recommend FAKE) and and CI (travis and appveyor). FAKE can automatically build the nuget packages and we could try to support multiple builds people have developed here on github (I saw WinRT and WindowsPhone specific commits).

Because there is a lot of documentation in the code I would also recommend using FSharp.Formatting to generate a documentation page.

PS: I used all this with success on RazorEngine which now has a nice documentation page automatically generated from the markup files and the code documentation in the repository.

The basic structure is already there and FAKE is very flexible so there are not too many changes needed... I think most things can just be copied from the RazorEngine repository.

In the future unit tests can be added they will be run on windows and linux on any new pull requests!

What do you think?
I would work on this myself but I have some other things to do, but if someone wants to start this and needs and hints feel free to ask!

IRCv3 support

This is just a note to say that IRCv3 support would be desirable, going forwards. I'm not sure how much of it is already in the library (probably not a lot), but it would be worth finding out and maybe starting by making a checklist here.

Add option to disable SSL checking

Basically, I need to connect on a non-standard port (7021) as well as ignoring an invalid (self signed) SSL Certificate - Can't connect without SSL. I can't find a way to specify the port, or specify to ignore the SSL self signed SSL and connect anyway.

As it is, it sits "Connecting" forever.

What am I doing wrong?(question, programming)

This is my code, it does not give me any error or something but it does not join the channel.:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IrcDotNet;

namespace Tim_s_IRC_bot
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var client = new IrcDotNet.StandardIrcClient())


            {
                client.Connect("irc.freenode.net/6667", true, new IrcUserRegistrationInfo()
                {
                    NickName = "testbot1234",
                    Password = "****",
                    UserName = "Tim241"
                });

                client.Channels.Join("#google");

                Console.ReadLine();

            };
        }
    }
}

Debug assert statements are enabled in release code

I'm connecting the IRC client to a custom coded (python) irc server (that someone else is hosting / made) that doesn't have everything implemented, so I expected some errors like this. The thing is, if I ignore all 10-30 popup windows (by pressing the Ignore button), the program continues to run fine but will not receive messages from normal channels (but will from private messages).

I would like some way to disable this assert fail spam, or just some advice on what to do about it. This pops up slightly after the IRC client connects to the server.

spam

Server NOTICE causes Null Reference Exception in IrcTargetMask.cs

Receiving the following NOTICE on an IRC network lead to an NRE:

:[email protected] NOTICE $* :IdleRPG is back! Join #idle-rpg to sign up and play

This appears to be because on line 43, this.mask = mask.Substring(1);, this.mask is null. A quick workaround I applied at run-time, this.mask = mask != null ? mask.Substring(1) : "";, allowed me to at least shut the program down gracefully immediately thereafter.

Cleanup documentation build procedure

See ./docs/build

This needs a cleanup. It's a good system for building the documents, but here are some things that need to be done:

  • Read project.json to get project details (they are hardcoded right now)
  • Use git worktree to update gh-pages rather than re-cloning
  • Cleanup the code generally, its a huge mess.

Help wanted!

EDIT: On hold, see #35

NuGet package requires .NETStandard v1.5

When attempting to install IrcDotNet via NuGet in VS2015, I get an error stating I am targeting an incompatible version of .NET:

Could not install package 'IrcDotNet 0.7.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5.2', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

The dependencies required by NuGet in VS2015:
Screenshot of dependencies in NuGet

Is it correct for IrcDotNet to not support versions of .NETStandard greater than v1.5?

Sign assemblies in NuGet package

Dear

Can you please provide signed assemblies in the NuGet packages.
This is often needed for projects that require strong name signing.

Thanks in advance.

Event Handlers are being called from a different thread.

I am trying to replace another irc library with your library. I am using it with Mono.
It seems to connect okay, but when an event handler, receives an event and I go to update the user interface, I get an "xxx can only be called from the main thread".

I don't know much about threading, but it seems to me that you should be returning the event on the main thread.

`public void Connect(Server server, bool useSsl, Profile userProfile)
{
// if already connected?

    IrcUserRegistrationInfo user = new IrcUserRegistrationInfo();
    user.UserName = userProfile.username;
    user.NickName = userProfile.nickname;
    user.RealName = userProfile.realname;
    user.Password = userProfile.password;

    ircClient = new StandardIrcClient();
    ircClient.FloodPreventer = new IrcStandardFloodPreventer(4, 2000);
    ircClient.Connected += ircClient_Connected;
  //  ircClient.ConnectFailed += ircClient_ConnectFailed;
  ///  ircClient.Disconnected += ircClient_Disconnected;
  //  ircClient.Error += ircClient_Error;
 //   ircClient.ProtocolError += ircClient_ProtocolError;
 //   ircClient.Registered += ircClient_Registered;
 //   ircClient.MotdReceived += ircClient_MotdReceived;
 //   ircClient.NetworkInformationReceived += ircClient_NetworkInformationReceived;
  //  ircClient.ServerVersionInfoReceived += ircClient_ServerVersionInfoReceived;
  //  ircClient.ServerTimeReceived += ircClient_ServerTimeReceived;
 //   ircClient.ServerLinksListReceived += ircClient_ServerLinksListReceived;
//    ircClient.ServerStatsReceived += ircClient_ServerStatsReceived;
 //   ircClient.WhoReplyReceived += ircClient_WhoReplyReceived;
 //   ircClient.WhoIsReplyReceived += ircClient_WhoIsReplyReceived;
 //   ircClient.WhoWasReplyReceived += ircClient_WhoWasReplyReceived;
  //  ircClient.ChannelListReceived += ircClient_ChannelListReceived;

    if (useSsl && server.sslPorts.Length > 0)
    {
        ircClient.Connect(server.hostName, server.sslPorts[0], true, user);
    }
    else if (useSsl == false && server.ports.Length > 0)
    {
        ircClient.Connect(server.hostName, server.ports[0], false, user);
    }
}

private void ircClient_Connected(object sender, EventArgs e)
{
txtSend.enabled = true; // ERROR

}

`

SSL unexpected EOF error due to non-blocking CircularBufferStream

To reproduce:

  1. Fresh clone of the repository, open the sln
  2. Open IrcBot.cs, change line 159 to client.Connect(server, true, registrationInfo); (to enable ssl).
  3. Start the "MarkovTextBot" sample
  4. When prompted, enter "connect chat.freenode.net" (which listens on port 6697 for SSL connections)

The following exception is thrown:

System.AggregateException occurred
  HResult=0x80131500
  Message=One or more errors occurred.
  Source=<Cannot evaluate the exception source>
  StackTrace:
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at IrcDotNet.StandardIrcClient.GetDataStream(Boolean useSsl, String targetHost) in C:\Documents\projects\IrcDotNet\source\IrcDotNet\StandardIrcClient.cs:line 592
   at IrcDotNet.StandardIrcClient.ConnectCompleted(Object sender, SocketAsyncEventArgs e) in C:\Documents\projects\IrcDotNet\source\IrcDotNet\StandardIrcClient.cs:line 444
   at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
   at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

Inner Exception 1:
IOException:  Received an unexpected EOF or 0 bytes from the transport stream.

Where the InnerException is:

System.IO.IOException:  Received an unexpected EOF or 0 bytes from the transport stream.
   at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes)
   at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)

I tried the same with another IRC server (also over SSL), with the same result.

Target MonoAndroid

Adding IrcDotNet via NuGet in Xamarin Studio fails with this message:

"Could not install package 'IrcDotNet 0.6.1'. You are trying to install this package into a project that targets 'MonoAndroid,Version=v6.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author."

Building IrcDotNet in Xamarin Studio, then referencing the dll works fine.

Unhanded exception

After running a system using an IRC connection for a while, the system throws the following exception:

Unhandled Exception: System.InvalidOperationException: Sequence contains more than one matching element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source, Func2 predicate)
at IrcDotNet.IrcChannel.GetChannelUser(IrcUser user) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\IrcChannel.cs:line 191
at IrcDotNet.TwitchIrcClient.OnChannelModeChanged(IrcChannel channel, IrcUser source, String newModes, IEnumerable`1 newModeParameters) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\TwitchIrcClient.cs:line 24
at IrcDotNet.IrcClient.ProcessMessageMode(IrcMessage message) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\IrcClientMessageProcessing.cs:line 114
at IrcDotNet.IrcClient.ReadMessage(IrcMessage message, String line) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\IrcClient.cs:line 1470
at IrcDotNet.IrcClient.ParseMessage(String line) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\IrcClient.cs:line 1648
at IrcDotNet.StandardIrcClient.ReceiveCompleted(Object sender, SocketAsyncEventArgs e) in C:\Users\Martin\Desktop\IrcDotNet\source\IrcDotNet\StandardIrcClient.cs:line 375
at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object ignored)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Objectstate, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

I suspect this is a race condition as the operations for modifying collections when for example adding a ChannelUser in IrcChannel is not atomic.

.NET 4 Compatibility

Hello, I've tried to include IrcDotNet in various c# solutions and it fails. I've attempted to target every version of the .NETFramework from 4.0 up. I even downloaded the zip archive of this repo and cannot get your solution to load in VS2015 or 2017. I've never had that issue before with other projects, so I'm not sure what I'm doing wrong here...

I get the standard error:

Could not install package 'IrcDotNet 0.7.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

Crash with native stacktrace after a few minutes

I tried to add a simple in-game IRC client to @OpenRA using your library, but it crashes horribly after a while. No idea how to investigate and solve this. Maybe you can help. Source code: https://github.com/Mailaender/OpenRA/compare/irc

Stacktrace:


Native stacktrace:

    /usr/bin/mono() [0x4ba2d8]
    /usr/bin/mono() [0x51046e]
    /usr/bin/mono() [0x42b2e8]
    /lib64/libpthread.so.0(+0xf890) [0x7f308c447890]

Debug info from gdb:


warning: /etc/gdbinit.d/gdb-heap.py: Datei oder Verzeichnis nicht gefunden
warning: File "/usr/bin/mono-sgen-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
    add-auto-load-safe-path /usr/bin/mono-sgen-gdb.py
line to your configuration file "/home/matthias/.gdbinit".
To completely disable this security protection add
    set auto-load safe-path /
line to your configuration file "/home/matthias/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
    info "(gdb)Auto-loading safe path"
[New LWP 19958]
[New LWP 19957]
[New LWP 19956]
[New LWP 19954]
[New LWP 19953]
[New LWP 19952]
[New LWP 19951]
[New LWP 19950]
[New LWP 19949]
[New LWP 19948]
[New LWP 19943]
[New LWP 19942]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Got object file from memory but can't read symbols: File truncated.
0x00007f308c16ec27 in ioctl () from /lib64/libc.so.6
  Id   Target Id         Frame 
  13   Thread 0x7f308a5f7700 (LWP 19942) "Finalizer" 0x00007f308c446010 in sem_wait () from /lib64/libpthread.so.0
  12   Thread 0x7f308a3f6700 (LWP 19943) "mono" 0x00007f308c446d9b in recv () from /lib64/libpthread.so.0
  11   Thread 0x7f3089796700 (LWP 19948) "mono" 0x00007f308c44405f in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
  10   Thread 0x7f308854b700 (LWP 19949) "Timer-Scheduler" 0x00007f308c447489 in waitpid () from /lib64/libpthread.so.0
  9    Thread 0x7f308834a700 (LWP 19950) "Threadpool moni" 0x00007f308c182de4 in clock_nanosleep () from /lib64/libc.so.6
  8    Thread 0x7f3088309700 (LWP 19951) "Threadpool work" 0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
  7    Thread 0x7f308809e700 (LWP 19952) "Threadpool work" 0x00007f308c176663 in epoll_wait () from /lib64/libc.so.6
  6    Thread 0x7f308805d700 (LWP 19953) "IO Threadpool w" 0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
  5    Thread 0x7f30669ff700 (LWP 19954) "Threadpool work" 0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
  4    Thread 0x7f305b9b4700 (LWP 19956) "threaded-ml" 0x00007f308c16dc5d in poll () from /lib64/libc.so.6
  3    Thread 0x7f3073e63700 (LWP 19957) "mono" 0x00007f308c44714d in nanosleep () from /lib64/libpthread.so.0
  2    Thread 0x7f3088d1f700 (LWP 19958) "Threadpool work" 0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
* 1    Thread 0x7f308cf54780 (LWP 19940) "mono" 0x00007f308c16ec27 in ioctl () from /lib64/libc.so.6

Thread 13 (Thread 0x7f308a5f7700 (LWP 19942)):
#0  0x00007f308c446010 in sem_wait () from /lib64/libpthread.so.0
#1  0x00000000006242b7 in mono_sem_wait (sem=sem@entry=0x954da0 <finalizer_sem>, alertable=alertable@entry=1) at mono-semaphore.c:101
#2  0x00000000005a8e9e in finalizer_thread (unused=<optimized out>) at gc.c:1074
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7ffc8fd0c550) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 12 (Thread 0x7f308a3f6700 (LWP 19943)):
#0  0x00007f308c446d9b in recv () from /lib64/libpthread.so.0
#1  0x00000000004dc669 in recv (__flags=0, __n=11, __buf=0x7f308a3f5d30, __fd=3) at /usr/include/bits/socket2.h:44
#2  socket_transport_recv (buf=0x7f308a3f5d30, len=11) at debugger-agent.c:1144
#3  0x00000000004e3457 in transport_recv (len=11, buf=0x7f308a3f5d30) at debugger-agent.c:1527
#4  debugger_thread (arg=<optimized out>) at debugger-agent.c:9639
#5  0x0000000000628f2e in inner_start_thread (arg=0x7ffc8fd0c400) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 11 (Thread 0x7f3089796700 (LWP 19948)):
#0  0x00007f308c44405f in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000603d3b in _wapi_handle_timedwait_signal_handle (handle=handle@entry=0x40c, timeout=timeout@entry=0x0, alertable=alertable@entry=1, poll=poll@entry=0) at handles.c:1602
#2  0x0000000000603dfb in _wapi_handle_wait_signal_handle (handle=handle@entry=0x40c, alertable=alertable@entry=1) at handles.c:1547
#3  0x000000000061657b in wapi_WaitForSingleObjectEx (handle=0x40c, timeout=timeout@entry=4294967295, alertable=alertable@entry=1) at wait.c:194
#4  0x000000000058cfcf in mono_wait_uninterrupted (thread=thread@entry=0x7f308a668500, multiple=multiple@entry=0, numhandles=numhandles@entry=1, handles=handles@entry=0x7f30897958c8, waitall=waitall@entry=0, ms=ms@entry=-1, alertable=1) at threads.c:1376
#5  0x000000000058e449 in ves_icall_System_Threading_WaitHandle_WaitOne_internal (this=<optimized out>, handle=0x40c, ms=-1, exitContext=<optimized out>) at threads.c:1509
#6  0x0000000040568c18 in ?? ()
#7  0x00007f308bd79a38 in ?? ()
#8  0x00007f3089795e40 in ?? ()
#9  0x00007f308bd79a38 in ?? ()
#10 0x00007f308bd79a38 in ?? ()
#11 0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f308854b700 (LWP 19949)):
#0  0x00007f308c447489 in waitpid () from /lib64/libpthread.so.0
#1  0x00000000004ba365 in mono_handle_native_sigsegv (signal=signal@entry=11, ctx=ctx@entry=0x7f308a67bac0, info=info@entry=0x7f308a67bbf0) at mini-exceptions.c:2347
#2  0x000000000051046e in mono_arch_handle_altstack_exception (sigctx=sigctx@entry=0x7f308a67bac0, siginfo=siginfo@entry=0x7f308a67bbf0, fault_addr=<optimized out>, stack_ovf=stack_ovf@entry=0) at exceptions-amd64.c:851
#3  0x000000000042b2e8 in mono_sigsegv_signal_handler (_dummy=11, _info=0x7f308a67bbf0, context=0x7f308a67bac0) at mini.c:6810
#4  <signal handler called>
#5  0x0000000000000000 in ?? ()
#6  0x00000000405c7020 in ?? ()
#7  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f308834a700 (LWP 19950)):
#0  0x00007f308c182de4 in clock_nanosleep () from /lib64/libc.so.6
#1  0x0000000000617808 in wapi_SleepEx (ms=ms@entry=500, alertable=alertable@entry=1) at wthreads.c:276
#2  0x00000000005902a5 in monitor_thread (unused=<optimized out>) at threadpool.c:896
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7f30897951a0) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 8 (Thread 0x7f3088309700 (LWP 19951)):
#0  0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
#1  0x000000000062439b in mono_sem_timedwait (sem=sem@entry=0x954a68 <async_tp+40>, timeout_ms=timeout_ms@entry=2000, alertable=alertable@entry=1) at mono-semaphore.c:64
#2  0x0000000000592372 in async_invoke_thread (data=0x0) at threadpool.c:1673
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7f3089795180) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 7 (Thread 0x7f308809e700 (LWP 19952)):
#0  0x00007f308c176663 in epoll_wait () from /lib64/libc.so.6
#1  0x0000000000591c92 in tp_epoll_wait (p=0x954ae0 <socket_io_data>) at ../../mono/metadata/tpool-epoll.c:118
#2  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#3  start_wrapper (data=<optimized out>) at threads.c:711
#4  0x0000000000628f2e in inner_start_thread (arg=0x7f3088308340) at mono-threads-posix.c:92
#5  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#6  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7f308805d700 (LWP 19953)):
#0  0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
#1  0x000000000062439b in mono_sem_timedwait (sem=sem@entry=0x9549c8 <async_io_tp+40>, timeout_ms=timeout_ms@entry=2000, alertable=alertable@entry=1) at mono-semaphore.c:64
#2  0x0000000000592372 in async_invoke_thread (data=0x0) at threadpool.c:1673
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7f3088308320) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f30669ff700 (LWP 19954)):
#0  0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
#1  0x000000000062439b in mono_sem_timedwait (sem=sem@entry=0x954a68 <async_tp+40>, timeout_ms=timeout_ms@entry=2000, alertable=alertable@entry=1) at mono-semaphore.c:64
#2  0x0000000000592372 in async_invoke_thread (data=0x0) at threadpool.c:1673
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7f3088349c70) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f305b9b4700 (LWP 19956)):
#0  0x00007f308c16dc5d in poll () from /lib64/libc.so.6
#1  0x00007f3065b8da41 in ?? () from /usr/lib64/libpulse.so.0
#2  0x00007f3065b7f2ec in pa_mainloop_poll () from /usr/lib64/libpulse.so.0
#3  0x00007f3065b7f95e in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0
#4  0x00007f3065b7fa10 in pa_mainloop_run () from /usr/lib64/libpulse.so.0
#5  0x00007f3065b8d9f3 in ?? () from /usr/lib64/libpulse.so.0
#6  0x00007f3065936808 in ?? () from /usr/lib64/pulseaudio/libpulsecommon-5.0.so
#7  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#8  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f3073e63700 (LWP 19957)):
#0  0x00007f308c44714d in nanosleep () from /lib64/libpthread.so.0
#1  0x00007f3065dcdf28 in ?? () from /usr/lib64/libopenal.so.1
#2  0x00007f3065dd9033 in ?? () from /usr/lib64/libopenal.so.1
#3  0x00007f3065dcd74a in ?? () from /usr/lib64/libopenal.so.1
#4  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f3088d1f700 (LWP 19958)):
#0  0x00007f308c4460f0 in sem_timedwait () from /lib64/libpthread.so.0
#1  0x000000000062439b in mono_sem_timedwait (sem=sem@entry=0x954a68 <async_tp+40>, timeout_ms=timeout_ms@entry=2000, alertable=alertable@entry=1) at mono-semaphore.c:64
#2  0x0000000000592372 in async_invoke_thread (data=0x0) at threadpool.c:1673
#3  0x000000000058d664 in start_wrapper_internal (data=<optimized out>) at threads.c:664
#4  start_wrapper (data=<optimized out>) at threads.c:711
#5  0x0000000000628f2e in inner_start_thread (arg=0x7f3088349c70) at mono-threads-posix.c:92
#6  0x00007f308c4400a4 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f308c17608d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f308cf54780 (LWP 19940)):
#0  0x00007f308c16ec27 in ioctl () from /lib64/libc.so.6
#1  0x00007f3070181da4 in drmIoctl () from /usr/lib64/libdrm.so.2
#2  0x00007f30676c2111 in ?? () from /usr/lib64/libdrm_intel.so.1
#3  0x00007f30676c22ac in drm_intel_gem_bo_context_exec () from /usr/lib64/libdrm_intel.so.1
#4  0x00007f3067bbcea9 in ?? () from /usr/lib64/dri/i965_dri.so
#5  0x00007f3067bbe1cb in ?? () from /usr/lib64/dri/i965_dri.so
#6  0x00007f3067bbf52c in ?? () from /usr/lib64/dri/i965_dri.so
#7  0x00007f3067bbfd7a in ?? () from /usr/lib64/dri/i965_dri.so
#8  0x0000000040659501 in ?? ()
#9  0x0000000000000000 in ?? ()

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

StandardIrcClient/IrcClient Quit method not disconnecting cleanly?

When using the 0.7.0 NuGet package on a new .NET Core 2.0 console application, Calling a connected, registered IrcClient's Quit method, with or without a comment, usually results in "EOF from client" for me when viewing the quit reason/line from another IRC client on the same server/channel. As i understand, That's basically saying the disconnecting wasn't clean on the client's side.

I'm connecting using the usual Connect method to QuakeNet, Not using SSL. I am registering for the Connected, Registered and Disconnected events. I wait for both the Connected and Registered events to come through before i try to join my channels.

Later on when calling Quit, I wait for the Disconnected event to come through before calling IrcClient's Dispose method.

Let me know if any more details could help diagnose this or if I'm doing something wrong

Documentation for "beginners"

Could someone please write some Wiki pages with example codes so that people with little experience in .NET can at least attempt at using this library, i can't find jack shit of information on how to connect to a server.

Network Information Received

So you connect to a network(Freenode), and it sends back the network information.
251, 252, 253, 254, 255, 265, 266, 250

IrcDotNet throws the NetworkInformationReceived event with the details in e.Comment.

e.Comment sometimes contains a properly formatted string

"There are 109 users and 84695 invisible on 32 servers"

and sometimes e.comment contains a number as a string.

"5"

The event is thrown 5 times out of the 8 responses. The last 3 never throw the event.

The way the Network Information is structured, I can't use sender to get the information, because there is no way to tell which piece of information threw the event.

nick changed event

Requested feature:

When sending a user nickname changed event, add a new eventArgs with the oldNickname and newNickname.

Can't see how its of any use without this information.

You have the IrcUser as sender, which will contain the new nickname, but not the old nickname. I have to find the string in a UI list to change it.

Restore documentation build scripts

For some reason the .gitignore ignored the build directory under doc. I need to figure out how to restore this and push it to master. Also unignore it.

Should be done in the next ~30 min.

Target .NET core

Although the code includes a project.json targeting netstandard1.5 (presumably as a result of #20 ), the package on NuGet seems to still be targeting .NET Framework and DNX targets. Will there be an updated NuGet package to support netstandard since we can't currently install this package into a .NET Core project?

Is this an error?

Likely a typo...or should it be reversed like that?

class IrcBot around line 341

image

Bug in the regex for serverName

The current regex for parsing the server name (regexServerName) is "([^%@]+?.[^%@]*)", however that returns a positive match for a user where the userName contains a dot (".") within the characters provided by the server. Example:

Windcape!claus.joer@Clk-7E3F3D83

Here the regex matches "Windcape!claus.joer", resulting in the Source being assumed to be a server, when it's in fact, a user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.