Lacewing

Languages and libraries

networking library

SHOW HN2011

84points
44comments
#138of 1,097 in 2011
Top 13%of 2011 by points

How HN took it

CuriousMostly questions and neutral comments

4 positive, 14 neutral or asking, 1 mixed, 6 critical, out of 25 comments about the project. Thread score -0.04.

Execution: 2 for, 5 againstIdea: 0 for, 1 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Clean, readable, well-laid-out code

    From 2 comments
    • Wow. Your code is a joy to read. Really clean and well-laid-out.
      munificent on HN
    • Awesome way of doing assertions! https://github.com/udp/lacewing/blob/f1c6386bf33f470ff61b275cf408282781625018/src/Common.h#L79 I remember I used to do something like that in C++…
      epidemian on HN
  • Cross-platform support on Windows, OS X and Linux

    From 1 comment
    • Yes, I've used it on both Windows and OS X, as well as Linux and FreeBSD servers. It uses IOCP on Windows and kqueue on OS X. There's a project file in the 'msvc' folder which…
      udp on HN

Objections

  • Security issues: unchecked lengths, path traversal, cookie header injection

    From 3 comments
    • +12? +8? ``` char * NameDecoded = (char *) malloc(strlen(Name) + 12); char * ValueDecoded = (char *) malloc(strlen(Value) + 12); if(!URLDecode(Name, NameDecoded, strlen(Name) +…
      tptacek on HN
    • Small potatoes but this: ``` for(char * i = this->URL; *i; ++ i) { if(i[0] == '.' && i[1] == '.' && (i[2] == '/' || i[2] == '\\')) ``` misses the case where the double dot is not…
      zwp on HN
    • Bigger potatoes: output sanitization? Eg only whitespace is trimmed from cookies, then in webserver.Outgoing.cc: ``` Socket << "\r\nSet-Cookie: " << Current->Key << "=" <<…
      zwp on HN
  • Not well tested; not safe for production use

    From 1 comment
    • Mongoose is only selecting for the listening socket, so the comparison there isn't particularly valid. Mongoose scales as well as threads on its platform scale. Mongoose also…
      tptacek on HN
  • Ad-hoc HTTP parser

    From 1 comment
    • In src/webserver/Webserver.Incoming.cc you have an ad-hoc HTTP parser that internally buffers partial request data and does some questionable things like recursing on each…
      sigil on HN

Requests

  • Use a standard HTTP parser library

    From 1 comment
    • In src/webserver/Webserver.Incoming.cc you have an ad-hoc HTTP parser that internally buffers partial request data and does some questionable things like recursing on each…
      sigil on HN
  • Drop multithreading in favour of single-threaded reactor

    From 1 comment
    • I honestly believe that you should avoid multithread support and instead focus on the current single threaded reactor pattern. Any developer found easily just attach something…
      udoprog on HN
  • Windows and Mac build support

    From 1 comment
    • Thanks for sharing! I was actually looking for a lightweight embeddable C/C++ web server not long ago, perhaps this will fit my needs. Only thing I'm wondering about is does it…
      dkersten on HN
  • Switch build system to SCons or plain Makefile

    From 2 comments
    • Have you considered using Scons as your build system, instead of Automake?
      misham on HN
    • I think a question people should often ask themselves is: Have you considered if you need a build system at all? Is this something I can properly build with a plain old Makefile?
      jff on HN

Questions

  • Can it be embedded in an iOS app?

    From 1 comment
    • what about embedding in an iOS app? Any thoughts on this and if Apple will let is pass?
      jason_slack on HN
  • How does it compare to Mongoose, libmicrohttpd or cpp-netlib?

    From 2 comments
    • Encouraging to see more development in this space. Thanks. I'm curious, though. How do you think this compares with the mongoose (http://code.google.com/p/mongoose/) project.…
      k_shehadeh on HN
    • Thanks for sharing. How does the basic functionality compare with, say, http://www.gnu.org/software/libmicrohttpd/ or http://cpp-netlib.github.com/ ? (the latter looks like it…
      mellery451 on HN

Alternatives named

  • Mongoose

    From 1 comment
    • Encouraging to see more development in this space. Thanks. I'm curious, though. How do you think this compares with the mongoose (http://code.google.com/p/mongoose/) project.…
      k_shehadeh on HN
  • libevent

    From 1 comment
    • Yes, iOS has working kqueue. I have some reason to believe you can get libevent working on iOS with minimal drama; I think there's at least one app that embeds it. Which, by the…
      tptacek on HN
  • libebb

    From 1 comment
  • libmicrohttpd

    From 1 comment
    • Thanks for sharing. How does the basic functionality compare with, say, http://www.gnu.org/software/libmicrohttpd/ or http://cpp-netlib.github.com/ ? (the latter looks like it…
      mellery451 on HN
  • cpp-netlib

    From 1 comment
    • Thanks for sharing. How does the basic functionality compare with, say, http://www.gnu.org/software/libmicrohttpd/ or http://cpp-netlib.github.com/ ? (the latter looks like it…
      mellery451 on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/2520882)