[Icecast-dev] [PATCH 29/31] connection: client_setup, send 403 when we can for error
Niv Sardi
nsardi at smartjog.com
Fri Jul 30 07:54:51 PDT 2010
Signed-off-by: Niv Sardi <nsardi at smartjog.com>
---
src/connection.c | 21 ++++++++-------------
1 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/src/connection.c b/src/connection.c
index 8d2d906..f1f8a9c 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -691,25 +691,20 @@ static int connection_client_setup (connection_queue_t *node) {
goto out_fail;
}
- err = -EINVAL;
if (sock_set_blocking (node->con->sock, 0) || sock_set_nodelay (node->con->sock)) {
- WARN0 ("failed to set tcp options on client connection, dropping");
- goto out_destroy_client;
- }
-
-/* XXX(xaiki): this should be 1, but actually, it's buggy, the client is already up and all.. */
- err = -ENOENT;
- if (node->con->con_timeout <= time(NULL)) {
- WARN("there might be a bug if you see this");
- goto out_destroy_client;
+ if (! sock_recoverable(sock_error())) {
+ node->con->error = 1;
+ err = -EINVAL;
+ goto out_fail;
+ }
+ err = -EINPROGRESS;
+ client_send_403 (node->client, "failed to set tcp options on client connection, dropping");
+ goto out_fail;
}
-
global_unlock();
return 0;
-out_destroy_client:
- client_destroy (node->client);
out_fail:
global_unlock();
return err;
--
1.7.1
More information about the Icecast-dev
mailing list