Skip to content

Commit

Permalink
Ignore return value of setsocketopt
Browse files Browse the repository at this point in the history
  • Loading branch information
mopemope committed Oct 10, 2012
1 parent e8a76e5 commit 8a6b118
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 126 deletions.
7 changes: 7 additions & 0 deletions CHANGES.rst
@@ -1,3 +1,10 @@
0.5.1
=======
(bug fix release, release 2012-10-11)

* Fix: Ignore setsocket error


0.5
=======
(New Feature release. rerelease 2012-10-09)
Expand Down
2 changes: 1 addition & 1 deletion meinheld/__init__.py
@@ -1,3 +1,3 @@
from meinheld.server import *
from meinheld import mlogging
__version__ = '0.5'
__version__ = '0.5.1'
2 changes: 1 addition & 1 deletion meinheld/server/meinheld.h
Expand Up @@ -31,7 +31,7 @@

#include "http_parser.h"

#define SERVER "meinheld/0.5"
#define SERVER "meinheld/0.5.1"
#define MODULE_NAME "meinheld.server"

#ifdef DEVELOP
Expand Down
46 changes: 16 additions & 30 deletions meinheld/server/util.c
Expand Up @@ -13,12 +13,7 @@ setup_listen_sock(int fd)
strcpy(afa.af_name, "httpready");
r = setsockopt(fd, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
#endif
assert(r == 0);
if(r == -1){
return r;
}
r = fcntl(fd, F_SETFL, O_NONBLOCK);
assert(r == 0);
return r;
}

Expand All @@ -33,7 +28,7 @@ setup_sock(int fd)
{
int on = 1, r;
r = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
assert(r == 0);
//assert(r == 0);

// 60 + 30 * 4
/*
Expand All @@ -47,56 +42,47 @@ setup_sock(int fd)
r = setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &on, sizeof(on));
assert(r == 0);
*/
if(r == -1){
return r;
}
/* if(r == -1){ */
/* return r; */
/* } */
r = fcntl(fd, F_SETFL, O_NONBLOCK);
assert(r == 0);
/* assert(r == 0); */
return r;
}

int
enable_cork(client_t *client)
{
int on = 1, r;
int on = 1;
#ifdef linux
r = setsockopt(client->fd, IPPROTO_TCP, TCP_CORK, &on, sizeof(on));
setsockopt(client->fd, IPPROTO_TCP, TCP_CORK, &on, sizeof(on));
#elif defined(__APPLE__) || defined(__FreeBSD__)
r = setsockopt(client->fd, IPPROTO_TCP, TCP_NOPUSH, &on, sizeof(on));
setsockopt(client->fd, IPPROTO_TCP, TCP_NOPUSH, &on, sizeof(on));
#else
#error
#endif
DEBUG("enable TCP CORK %d", r);
assert(r == 0);
if(r == -1){
return r;
}
DEBUG("enable TCP CORK");
client->use_cork = 1;
return r;
return 1;
}

int
disable_cork(client_t *client)
{
int off = 0;
int on = 1, r = 1;
int on = 1;
if(client->use_cork == 1){
#ifdef linux
r = setsockopt(client->fd, IPPROTO_TCP, TCP_CORK, &off, sizeof(off));
setsockopt(client->fd, IPPROTO_TCP, TCP_CORK, &off, sizeof(off));
#elif defined(__APPLE__) || defined(__FreeBSD__)
r = setsockopt(client->fd, IPPROTO_TCP, TCP_NOPUSH, &off, sizeof(off));
setsockopt(client->fd, IPPROTO_TCP, TCP_NOPUSH, &off, sizeof(off));
#else
#error
#endif
DEBUG("disable TCP CORK %d", r);
assert(r == 0);
if(r == -1){
return r;
}
r = setsockopt(client->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
assert(r == 0);
DEBUG("disable TCP CORK");
setsockopt(client->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
}
return r;
return 1;
}

uintptr_t
Expand Down
127 changes: 41 additions & 86 deletions setup.py
Expand Up @@ -74,90 +74,45 @@ def get_sources(path, ignore_files):
#TODO set python include dirs
include_dirs=[]

if sys.hexversion >= 0x03030000:
setup(name='meinheld',
version="0.5",
description="High performance asynchronous Python WSGI Web Server",
long_description=read('README.rst'),
author='yutaka matsubara',
author_email='yutaka.matsubara@gmail.com',
url='http://meinheld.org',
license='BSD',
platforms='Linux, BSD, Darwin',
packages= ['meinheld'],
requires=["greeenlet (==0.4.0)"],

# entry_points="""

# [gunicorn.workers]
# gunicorn_worker=meinheld.gmeinheld:MeinheldWorker
# """,
ext_modules = [
Extension('meinheld.server',
sources=sources,
include_dirs=include_dirs,
library_dirs=library_dirs,
# libraries=["profiler"],
# extra_compile_args=[""],
define_macros=define_macros
)],

classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: POSIX :: Linux',
'Operating System :: MacOS :: MacOS X',
'Operating System :: POSIX :: BSD :: FreeBSD',
'Programming Language :: C',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Server'
],
)

else:

setup(name='meinheld',
version="0.5",
description="High performance asynchronous Python WSGI Web Server",
long_description=read('README.rst'),
author='yutaka matsubara',
author_email='yutaka.matsubara@gmail.com',
url='http://meinheld.org',
license='BSD',
platforms='Linux, BSD, Darwin',
packages= ['meinheld'],
install_requires=install_requires,

entry_points="""
[gunicorn.workers]
gunicorn_worker=meinheld.gmeinheld:MeinheldWorker
""",
ext_modules = [
Extension('meinheld.server',
sources=sources,
include_dirs=include_dirs,
library_dirs=library_dirs,
# libraries=["profiler"],
# extra_compile_args=[""],
define_macros=define_macros
)],

classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: POSIX :: Linux',
'Operating System :: MacOS :: MacOS X',
'Operating System :: POSIX :: BSD :: FreeBSD',
'Programming Language :: C',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Server'
],
)
setup(name='meinheld',
version="0.5.1",
description="High performance asynchronous Python WSGI Web Server",
long_description=read('README.rst'),
author='yutaka matsubara',
author_email='yutaka.matsubara@gmail.com',
url='http://meinheld.org',
license='BSD',
platforms='Linux, BSD, Darwin',
packages= ['meinheld'],
install_requires=install_requires,

entry_points="""
[gunicorn.workers]
gunicorn_worker=meinheld.gmeinheld:MeinheldWorker
""",
ext_modules = [
Extension('meinheld.server',
sources=sources,
include_dirs=include_dirs,
library_dirs=library_dirs,
# libraries=["profiler"],
# extra_compile_args=[""],
define_macros=define_macros
)],

classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: POSIX :: Linux',
'Operating System :: MacOS :: MacOS X',
'Operating System :: POSIX :: BSD :: FreeBSD',
'Programming Language :: C',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Server'
],
)

17 changes: 9 additions & 8 deletions tests/test_socket.py
Expand Up @@ -11,6 +11,7 @@

ASSERT_RESPONSE = b"Hello world!"
RESPONSE = [b"Hello ", b"world!"]
RESPONSE_LEN = 137

class App(BaseApp):

Expand Down Expand Up @@ -160,7 +161,7 @@ def _test():
s.connect(("localhost", 8000))
s.send(b"GET / HTTP/1.0\r\n")
s.send(b"\r\n")
assert(len(s.recv(1024)) == 135)
assert(len(s.recv(1024)) == RESPONSE_LEN)
server.shutdown()

server.listen(("0.0.0.0", 8000))
Expand All @@ -172,7 +173,7 @@ def _test():
s = msocket.socket(msocket.AF_INET, msocket.SOCK_STREAM)
s.connect(("localhost", 8000))
s.sendall(b"GET / HTTP/1.0\r\n\r\n")
assert(len(s.recv(1024)) == 135)
assert(len(s.recv(1024)) == RESPONSE_LEN)
server.shutdown()

server.listen(("0.0.0.0", 8000))
Expand All @@ -184,7 +185,7 @@ def _test():
s = msocket.socket(msocket.AF_INET, msocket.SOCK_STREAM)
s.connect(("localhost", 8000))
s.sendto(b"GET / HTTP/1.0\r\n\r\n", (b'localhost',8000))
assert(len(s.recv(1024)) == 135)
assert(len(s.recv(1024)) == RESPONSE_LEN)
server.shutdown()

server.listen(("0.0.0.0", 8000))
Expand All @@ -199,7 +200,7 @@ def _test():
s.send(b"GET / HTTP/1.0\r\n")
s.send(b"\r\n")
c = s.recv(1024)
assert(len(c) == 135)
assert(len(c) == RESPONSE_LEN)

server.shutdown()

Expand All @@ -215,7 +216,7 @@ def _test():
s.send(b"GET / HTTP/1.0\r\n")
s.send(b"\r\n")
c, addr = s.recvfrom(1024)
assert(len(c) == 135)
assert(len(c) == RESPONSE_LEN)

server.shutdown()

Expand All @@ -232,7 +233,7 @@ def _test():
s.send(b"\r\n")
buf = array.array('b', [0] *1024)
r, addr = s.recvfrom_into(buf, 1024)
assert(r == 135)
assert(r == RESPONSE_LEN)

server.shutdown()

Expand All @@ -249,7 +250,7 @@ def _test():
s.send(b"\r\n")
buf = array.array('b', [0] *1024)
r = s.recv_into(buf)
assert(r == 135)
assert(r == RESPONSE_LEN)

server.shutdown()

Expand Down Expand Up @@ -280,7 +281,7 @@ def _test():
f.write(b"\r\n")
f.flush()
c = f.read(1024)
assert(len(c) == 135)
assert(len(c) == RESPONSE_LEN)
server.shutdown()

server.listen(("0.0.0.0", 8000))
Expand Down

0 comments on commit 8a6b118

Please sign in to comment.