From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: git@vger.kernel.org
Subject: [JGIT PATCH 6/6] Add --timeout command line options
Date: Fri, 19 Jun 2009 14:27:55 -0700 [thread overview]
Message-ID: <1245446875-31102-7-git-send-email-spearce@spearce.org> (raw)
In-Reply-To: <1245446875-31102-6-git-send-email-spearce@spearce.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
.../src/org/spearce/jgit/pgm/Daemon.java | 5 +++++
.../src/org/spearce/jgit/pgm/Fetch.java | 5 +++++
.../src/org/spearce/jgit/pgm/LsRemote.java | 6 ++++++
.../src/org/spearce/jgit/pgm/Push.java | 5 +++++
.../src/org/spearce/jgit/pgm/UploadPack.java | 6 ++++++
5 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java
index e064fd8..6508910 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java
@@ -54,6 +54,9 @@
@Option(name = "--listen", metaVar = "HOSTNAME", usage = "hostname (or ip) to listen on")
String host;
+ @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity")
+ int timeout = -1;
+
@Option(name = "--enable", metaVar = "SERVICE", usage = "enable the service in all repositories", multiValued = true)
final List<String> enable = new ArrayList<String>();
@@ -85,6 +88,8 @@ protected void run() throws Exception {
host != null ? new InetSocketAddress(host, port)
: new InetSocketAddress(port));
d.setExportAll(exportAll);
+ if (0 <= timeout)
+ d.setTimeout(timeout);
for (final String n : enable)
service(d, n).setEnabled(true);
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java
index 81d6893..d7be9fa 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java
@@ -48,6 +48,9 @@
@Command(common = true, usage = "Update remote refs from another repository")
class Fetch extends AbstractFetchCommand {
+ @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity")
+ int timeout = -1;
+
@Option(name = "--fsck", usage = "perform fsck style checks on receive")
private Boolean fsck;
@@ -86,6 +89,8 @@ protected void run() throws Exception {
tn.setDryRun(dryRun);
if (thin != null)
tn.setFetchThin(thin.booleanValue());
+ if (0 <= timeout)
+ tn.setTimeout(timeout);
final FetchResult r;
try {
r = tn.fetch(new TextProgressMonitor(), toget);
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java
index bfa38ec..da2de9a 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java
@@ -38,18 +38,24 @@
package org.spearce.jgit.pgm;
import org.kohsuke.args4j.Argument;
+import org.kohsuke.args4j.Option;
import org.spearce.jgit.lib.AnyObjectId;
import org.spearce.jgit.lib.Ref;
import org.spearce.jgit.transport.FetchConnection;
import org.spearce.jgit.transport.Transport;
class LsRemote extends TextBuiltin {
+ @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity")
+ int timeout = -1;
+
@Argument(index = 0, metaVar = "uri-ish", required = true)
private String remote;
@Override
protected void run() throws Exception {
final Transport tn = Transport.open(db, remote);
+ if (0 <= timeout)
+ tn.setTimeout(timeout);
final FetchConnection c = tn.openFetch();
try {
for (final Ref r : c.getRefs()) {
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java
index 19d31a1..018a521 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java
@@ -55,6 +55,9 @@
@Command(common = true, usage = "Update remote repository from local refs")
class Push extends TextBuiltin {
+ @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity")
+ int timeout = -1;
+
@Argument(index = 0, metaVar = "uri-ish")
private String remote = "origin";
@@ -104,6 +107,8 @@ protected void run() throws Exception {
final List<Transport> transports = Transport.openAll(db, remote);
for (final Transport transport : transports) {
+ if (0 <= timeout)
+ transport.setTimeout(timeout);
transport.setPushThin(thin);
if (receivePack != null)
transport.setOptionReceivePack(receivePack);
diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java
index d09d442..1d9af24 100644
--- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java
+++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java
@@ -40,10 +40,14 @@
import java.io.File;
import org.kohsuke.args4j.Argument;
+import org.kohsuke.args4j.Option;
import org.spearce.jgit.lib.Repository;
@Command(common = false, usage = "Server side backend for 'jgit fetch'")
class UploadPack extends TextBuiltin {
+ @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity")
+ int timeout = -1;
+
@Argument(index = 0, required = true, metaVar = "DIRECTORY", usage = "Repository to read from")
File srcGitdir;
@@ -62,6 +66,8 @@ protected void run() throws Exception {
if (!db.getObjectsDirectory().isDirectory())
throw die("'" + srcGitdir.getPath() + "' not a git repository");
rp = new org.spearce.jgit.transport.UploadPack(db);
+ if (0 <= timeout)
+ rp.setTimeout(timeout);
rp.upload(System.in, System.out, System.err);
}
}
--
1.6.3.2.416.g04d0
next prev parent reply other threads:[~2009-06-19 21:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-19 21:27 [JGIT PATCH 0/6] Add timeouts to network IO Shawn O. Pearce
2009-06-19 21:27 ` [JGIT PATCH 1/6] Create input and output streams that have timeouts Shawn O. Pearce
2009-06-19 21:27 ` [JGIT PATCH 2/6] Add remote.name.timeout to configure an IO timeout Shawn O. Pearce
2009-06-19 21:27 ` [JGIT PATCH 3/6] Add timeouts to smart transport protocol clients Shawn O. Pearce
2009-06-19 21:27 ` [JGIT PATCH 4/6] Add timeouts to smart transport protocol servers Shawn O. Pearce
2009-06-19 21:27 ` [JGIT PATCH 5/6] Add timeouts to anonymous git:// daemon Shawn O. Pearce
2009-06-19 21:27 ` Shawn O. Pearce [this message]
2009-06-20 22:28 ` [JGIT PATCH 2/6] Add remote.name.timeout to configure an IO timeout Robin Rosenberg
2009-06-20 22:54 ` Shawn O. Pearce
2009-06-22 21:09 ` [JGIT PATCH 1/6] Create input and output streams that have timeouts Robin Rosenberg
2009-06-23 16:41 ` [JGIT PATCH 1/6 v2] " Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1245446875-31102-7-git-send-email-spearce@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg@dewire.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).