Comments (6)
Fuzzing is an even smarter way to do it than the RFC torture tests. I'd welcome a change like this.
from gosip.
Did you have considered to move the SIP, SDP parser into a separate repository? This would reduce the scope and mby gain more search hit's? Since I've used Ragel in some projects myself (like fast CSeq parser) I know that it's mby not the fastest way to build a SIP parser BUT it's a good way to build a fast and correct one. Your implementation has a good quality, better than the most others you can find for Go on Github. Just thinking out loud ;)
from gosip.
Would that help people only link the parts they need? If so I say let's do that.
What do you think of naming the directories sip/parse/
and sdp/parse/
?
from gosip.
I still think there is a lack of a fast and correct general purpose SIP/SDP parser in Go. Probably because of this some of the existing SIP stacks in Go on Github come with their own implementations.
What do you think of naming the directories sip/parse/ and sdp/parse/?
With the current function names this would result in
...parse.Parse() (for SDP)
...parse.ParseMsg (for SIP)
Go also has a parser package https://golang.org/pkg/go/parser
Shadowing that style it could be sip/parser/ and sdp/parser/ like:
parser.ParseSIP()
parser.ParseSDP()
from gosip.
Ah yes that's a good point, regarding Go readability. Taking a quick glance at the Effective Go guide, how about sip/sipfsm
and sdp/sdpfsm
which are succinct, unique, and short for Finite State Machine.
Out of curiosity, does the Go linker do the equivalent of -ffunction-sections
? We might want to try building a binary that only references the existing sip.ParseSIP()
function and verifying that it doesn't schlep in things like the dialog and socket code.
from gosip.
Taking a quick glance at the Effective Go guide, how about sip/sipfsm and sdp/sdpfsm which are succinct, unique, and short for Finite State Machine.
+1
Out of curiosity, does the Go linker do the equivalent of -ffunction-sections? We might want to try building a binary that only references the existing sip.ParseSIP() function and verifying that it doesn't schlep in things like the dialog and socket code.
Go's nearest equivalent of -ffunction-sections are Build Constraints better known as build tags.
https://golang.org/pkg/go/build/#hdr-Build_Constraints
Currently you don't use any external dependencies and without having a huge codebase I think it's probably not worth the effort.
from gosip.
Related Issues (20)
- Move dialog into own package HOT 6
- Decouple SDP parser from SIP parser HOT 13
- Support Wildcard Contact HOT 6
- How to play audio file? HOT 11
- 有没有对应的文档? HOT 2
- Extension Header parse failed HOT 1
- Via port=0
- Future plans for SIP over TLS? HOT 1
- To will be parsed as null,This message is generated by mac software, telephone。
- rtp header read bug
- Implementing a sip server, receiving calls
- Compilation issue: missing function body HOT 7
- util.GenerateCallID() always generates the same UUIDs
- Question: How to parse DTMF?
- How to make all SIP traffic use an outbound proxy?
- Newly published Go library for SIP/RTP/SDP/DTMF/DSP HOT 6
- Is this repository still being maintained? HOT 2
- Set up CI system HOT 7
- Handle empty SDP Addr TODO HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gosip.