equal
deleted
inserted
replaced
121 # require ssl by default, auth info cannot be sniffed and |
121 # require ssl by default, auth info cannot be sniffed and |
122 # replayed |
122 # replayed |
123 ssl_req = web.configbool('web', 'push_ssl', True) |
123 ssl_req = web.configbool('web', 'push_ssl', True) |
124 if ssl_req: |
124 if ssl_req: |
125 if req.env.get('wsgi.url_scheme') != 'https': |
125 if req.env.get('wsgi.url_scheme') != 'https': |
126 bail(_('ssl required\n')) |
126 bail('ssl required\n') |
127 return |
127 return |
128 proto = 'https' |
128 proto = 'https' |
129 else: |
129 else: |
130 proto = 'http' |
130 proto = 'http' |
131 |
131 |
132 # do not allow push unless explicitly allowed |
132 # do not allow push unless explicitly allowed |
133 if not web.check_perm(req, 'push', False): |
133 if not web.check_perm(req, 'push', False): |
134 bail(_('push not authorized\n'), |
134 bail('push not authorized\n', |
135 headers={'status': '401 Unauthorized'}) |
135 headers={'status': '401 Unauthorized'}) |
136 return |
136 return |
137 |
137 |
138 their_heads = req.form['heads'][0].split(' ') |
138 their_heads = req.form['heads'][0].split(' ') |
139 |
139 |
141 heads = map(hex, web.repo.heads()) |
141 heads = map(hex, web.repo.heads()) |
142 return their_heads == [hex('force')] or their_heads == heads |
142 return their_heads == [hex('force')] or their_heads == heads |
143 |
143 |
144 # fail early if possible |
144 # fail early if possible |
145 if not check_heads(): |
145 if not check_heads(): |
146 bail(_('unsynced changes\n')) |
146 bail('unsynced changes\n') |
147 return |
147 return |
148 |
148 |
149 req.respond(HTTP_OK, HGTYPE) |
149 req.respond(HTTP_OK, HGTYPE) |
150 |
150 |
151 # do not lock repo until all changegroup data is |
151 # do not lock repo until all changegroup data is |
161 try: |
161 try: |
162 lock = web.repo.lock() |
162 lock = web.repo.lock() |
163 try: |
163 try: |
164 if not check_heads(): |
164 if not check_heads(): |
165 req.write('0\n') |
165 req.write('0\n') |
166 req.write(_('unsynced changes\n')) |
166 req.write('unsynced changes\n') |
167 return |
167 return |
168 |
168 |
169 fp.seek(0) |
169 fp.seek(0) |
170 header = fp.read(6) |
170 header = fp.read(6) |
171 if header.startswith('HG') and not header.startswith('HG10'): |
171 if header.startswith('HG') and not header.startswith('HG10'): |